从多个窗口进程获取未读电子邮件时并发问题
本文关键字:电子邮件 并发 问题 获取 窗口 进程 | 更新日期: 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;
}