关于如何横向扩展订阅Exchange Web Services的服务流程的任何模式

本文关键字:服务 模式 任何 Services Web 横向 于如何 扩展 Exchange | 更新日期: 2023-09-27 17:54:07

我想知道您的想法,我如何能够使我的服务进程横向扩展,能够跨多个服务器运行它。它是一个用c#编写的Windows服务,其目的是订阅我们公司的Exchange Web service (EWS),以便每当有新的电子邮件消息传入时(通过HTTP回调)它都会收到通知。然后服务获取电子邮件消息,处理它,如果可能的话发送一个回复,然后返回睡眠状态,等待下一个传入的电子邮件。

如果我在多台机器上运行它,我可以让所有机器都订阅EWS通知,也可以只订阅其中一台。如果我让他们都订阅,我有点犹豫,因为这可能会给我们的MS Exchange基础设施增加负担。这也将导致所有的机器接收和处理电子邮件。对于给定的请求消息,我不希望发送方收到N次回复(其中N是服务器场中的服务器数量)!现在,如果我只有一台机器订阅EWS,这将使我暴露在单点故障中。

我想听听你对如何解决这个问题的建议。我希望有多个服务器通过在它们之间分发电子邮件消息来处理传入的消息(也许我必须通过使用消息队列服务器来实现这一点)。谢谢。

关于如何横向扩展订阅Exchange Web Services的服务流程的任何模式

取决于您是在扩展可靠性还是吞吐量。

如果可靠性,可以有一个主进程和一个备用进程。主进程订阅并处理所有电子邮件。备用进程与主进程交换保持活动消息,并在保持活动超时时作为主进程接管。

如果吞吐量,那么消息队列机制,如您所建议的,可能是一个很好的方法。您可以像上面那样运行主服务器和备用服务器,但是主服务器只是将电子邮件拉到队列中。一组消息处理器从队列中取出。