MSMQ和不同服务器上的多个wcf服务从同一队列中读取

时间:2014-01-23 08:23:06

标签: wcf msmq wcf-binding

我知道SO上有几篇帖子讨论了这个问题,但我无法找到对我的方案的直接答案。

让我们说:

  1. Server-A上的一个队列,其中包含大量消息
  2. 一个WCF服务,其中NetMsmq绑定在Server-B读取Server-A的队列
  3. 使用与Server-A队列相同的绑定读取部署到另一个Server-C的同一WCF服务
  4. 我保证Server-B和Server-C上的服务永远不会处理相同的消息吗?

    此设置是否还有其他问题需要注意?

    此设置的目的是从同一队列读取多个wcf服务,以提高处理速度,我不想使用硬件负载均衡器。

    谢谢你的时间!

1 个答案:

答案 0 :(得分:3)

您需要使队列成为事务性的,然后将绑定上的exactOnce属性设置为true。

参考: http://msdn.microsoft.com/en-us/library/system.servicemodel.msmqbindingbase.exactlyonce(v=vs.110).aspx

这应该照顾它。您可以从同一队列中读取多个读取器(WCF服务)。这基本上是一个负载均衡概念,是基于队列的消息传递的意图。以下是WCF和MSMQ的一些背景文档。

http://msdn.microsoft.com/en-us/library/ms789048(v=vs.110).aspx