1

我是 MSMQ 的新手。
这是我的场景:计费软件生成账单后,我需要向所有客户发送电子邮件以保证交付(快速)。
以下是我们需要注意的可能事项:
1.如果 Internet 出现故障,那么应该有一段时间后重试发送的能力。
2.电子邮件发送顺序
3.能够优先处理/发送电子邮件。

我有关于服务代理(MSSB)的知识。

谢谢

4

1 回答 1

4

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

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

总而言之,我会这样做:

  1. 创建一个中央服务(使用 MSMQ),它将接收和处理您的电子邮件请求。
  2. 确保托管 MSMQ 服务的服务器可以可靠地访问 SMTP 服务器。
  3. 让您的计费软件将电子邮件请求发送到该中央 MSMQ 服务,而不是直接发送到 SMTP 服务器。
  4. 在中央服务器上按您的意愿处理请求,即每当您在队列中收到新消息时,调用您的电子邮件发送服务。

虽然说了这么多,但这只是将 MSMQ 融入场景的秘诀,我不能太确定它是否是您想要做的最好的事情,但这是您可以将它集成到您​​的企业。

于 2012-05-18T16:02:39.057 回答