负载均衡WCF并共享远程MSMQ以实现高吞吐量

时间:2010-03-31 17:50:02

标签: .net wcf msmq load-balancing

经过大量阅读书籍和网络阅读后,我注意到有关WCF和MSMQ可用于实现高吞吐量的信息提示。我所看到的信息提到在一个从单个MSMQ队列中读取的服务器场中使用多个WCF服务。问题是我在这里和那里发现段落提到可以完成高吞吐量,但我似乎无法找到如何实现它的文档。  以下是MSDN文章的摘录。

以下段落来自排队通信最佳实践 http://msdn.microsoft.com/en-us/library/ms731093.aspx 要获得更高的吞吐量和可用性,请使用从队列中读取的WCF服务场。这要求所有这些服务在同一端点上公开相同的合同。场方法最适用于具有高生成率的消息的应用程序,因为它允许从同一队列中读取所有服务。

这就是我想要解决的问题。我有一个Intranet应用程序,客户端向WCF服务发送请求。但我希望能够在服务器场中的多个服务器上对WCF服务进行负载平衡。我还希望服务器场中的这些WCF服务在队列中有项目可用时从远程MSMQ执行事务读取。如果这是可能的,我遇到的一个问题是我不理解WCF从远程队列中检索消息的激活过程。

如果可以,有没有人知道会详细解释它的任何文章或网络广播?

BarDev

1 个答案:

答案 0 :(得分:4)

我不知道任何文章,但作为概念证明,我针对msmq运行了现有wcf应用程序的多个实例。

如果队列中已经存在10条消息,那么它们只由一个wcf实例处理。

然而,发布到队列中的所有后续消息在所有wcf实例之间几乎平分,提供了非常简洁的负载平衡解决方案。

你需要做的是创建一个针对msmq运行的单个wcf服务,确保它正常工作,然后通过运行越来越多的wcf服务实例来看看发生了什么