MSMQ适合这种情况吗?电子邮件发送申请

时间:2012-05-18 10:56:25

标签: .net c#-4.0 msmq

我是MSMQ的新手 这是我的场景: 一旦账单由Billing Software生成,我需要向所有客户发送电子邮件并保证交付(快速) 以下是我们需要注意的事项:
1. 如果互联网停机,则应该有一段时间后重试发送的能力。
2. 发送电子邮件的顺序 3. 能够处理/发送优先级的电子邮件。

我对Service Broker(MSSB)有所了解。

由于

1 个答案:

答案 0 :(得分:4)

要解决问题中的第1点,如果您在不同位置有许多计费软件实例,那么您可以创建一个负责发送电子邮件的“中央”服务(让我们可以调用托管该服务的计算机) ServerX)。在这种情况下,您需要解决的主要问题是确保ServerX可以持续访问SMTP服务器(将发送电子邮件)。因此,理想情况下,ServerX应该具有非常可靠和稳定的Internet连接,或者如果您的SMTP服务器位于您自己的网络上,那么ServerX必须具有 无阻碍地访问LAN上的SMTP服务器。现在,如果您生成要发送给客户的账单的软件位于不同的位置 (远离ServerX)然后您可以使用MSMQ来确保计费软件实例发送的电子邮件请求实际上已传送到ServerX。基本上,您的计费软件将直接在ServerX上调用MSMQ服务而不是直接调用SMTP服务器,此处MSMQ可以充当调解器,将收到的消息传递给SMTP服务器。如果你想到的架构是我上面提到的,那么这是一个可行且易于实现的服务。您可以让您的计费软件的每个实例都调用SMTP服务器 - 尽管这样您就会为自己制造额外的障碍并创建多个可能的故障点而不是减少它们。

一旦您的计费软件实例调用ServerX,您提到的其余点(2&3)就变成了简单的手续,并且可以通过ServerX上的服务中的简单业务逻辑轻松解决。

总而言之,我会这样做:

  1. 创建一个中央服务(使用MSMQ),它将接收和处理您的电子邮件请求。
  2. 确保托管MSMQ服务的服务器具有对SMTP服务器的可靠访问权。
  3. 让您的结算软件将电子邮件请求发送到该中央MSMQ服务,而不是直接发送到SMTP服务器。
  4. 按照您的意愿在中央服务器上处理请求,即每当您在队列中收到新消息时,都会调用您的电子邮件发送服务。
  5. 尽管已经说了这些,但这只是让MSMQ适应场景的一个方法,我不能太确定它是否是你想要做的最好的事情,但这是你可以整合的一种方式它进入你的企业。