从多个窗口进程获取未读电子邮件时并发问题

本文关键字:电子邮件 并发 问题 获取 窗口 进程 | 更新日期: 2023-09-27 17:53:32

我想通过多个windows服务从exchange服务器获取电子邮件;每个Windows服务在单独的服务器上。我倾向于使用第三方工具获取电子邮件。

我关心并发问题;例如:两个服务在同一时刻抓取同一封邮件。我不想使用一个控制器进程,将控制哪个进程得到哪个电子邮件。

我正在考虑一种锁定机制,类似于数据库锁,每个进程都可以在进程中锁定电子邮件,然后标记它,一旦完成。或者

一个'fetch'方法,将标记电子邮件即时。在微秒或更短的时间内,在其他进程到达之前。或者

还有其他的想法吗

感谢

从多个窗口进程获取未读电子邮件时并发问题

您可能必须使用DB锁定某些表。让您的服务用todo填充表格,然后将它们标记为已完成。您的服务将需要指向一个它们将获得工作Todo的位置,因此这将是您的并发解决方案。可能,一个服务只是填充todo,而其他服务则处理它们。也许MSMQ能帮上忙。一种服务在排队,另一种服务在排队。

这里有一些你可能想看的东西.NET POP3 MIME客户端

你可能想在代码中尝试像这样的东西作为一个例子

    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;
    }