0

複数のWindowsサービスを介してExchangeサーバーから電子メールを取得したい。各Windowsサービスは別々のサーバーにあります。私はサードパーティのツールを使用してメールを取得することに傾倒しています。

並行性の問題が心配です。つまり、2つのサービスが同時に同じメールを取得します。どのプロセスがどの電子メールを取得するかを制御するコントローラープロセスを使用したくありません。

私は、データベースロックと同様に、各プロセスが処理中に電子メールをロックし、完了したらマークを付けることができるロックメカニズムについて考えています。また

電子メールを即座にマークする「フェッチ」メソッド。他のプロセスが到達する前に、マイクロマイクロ秒以下で。また

頭に浮かぶ他のアイデア。

とても感謝しております

4

2 に答える 2

0

.NETPOP3MIMEクライアントを確認することをお勧めします

例として、コードでこのようなものを試してみることもできます

    Outlook.Application outlook = new Outlook.ApplicationClass();
    Outlook.NameSpace ns = outlook.GetNamespace("Mapi");
    object _missing = Type.Missing;
    ns.Logon(_missing, _missing, false, true);
    Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

    int unread = inbox.UnReadItemCount;
    foreach (Outlook.MailItem mail in inbox.Items)
    {
        string s = mail.Subject;
    } 
于 2013-01-15T16:36:35.117 に答える
0

おそらく、いくつかのテーブルをロックしてDBを使用する必要があります。テーブルにToDoを入力し、完了としてマークするサービスを用意します。あなたのサービスは、彼らが仕事のTodoを得る1つの場所を指す必要があるので、これはあなたの並行性ソリューションになるでしょう。たぶん、TODOにデータを入力するための1つのサービスと、それらを処理するための他のサービスです。MSMQが役立つかもしれません。1つのサービスがキューをスタックし、他のサービスは在庫をなくします。

于 2013-01-15T16:24:15.947 に答える