MSMQ一个(队列)到多个(侦听器)方案

|| 我有这种情况:一个客户端将消息发送到msmq队列实例中,并且有3个进程在此队列上进行侦听。我希望能够让这些实例中的每个实例选择不同的消息并进行处理。 我知道这是队列的常见用法,并且我已经使用MSMQ,.NET和C#为此提供了工作代码。 但是我想知道msmq是否是我最好的选择-文档明确指出MSMQ是用于“一对一”通信的,这意味着不应有多个侦听器。 这种让我感到奇怪的是,我在为自己的用例做正确的解决方案吗?还是反过来,我是否必须为每个侦听器创建一个队列并将消息分发到工作流的前一部分? 链接到一个演示在这种情况下使用MSMQ的工作示例的链接将不胜感激。 谢谢     
已邀请:
        据我了解,您正在使用多个侦听器来执行诸如负载平衡之类的操作。这是绝对有效的方案,通常用于群集环境或单个侦听器无法使用所有传入消息的负载平衡方案中。顺便说一句。群集的BizTalk以相同的方式使用MSMQ消息。 一对一的意思是将一条消息传递给一个侦听器,但这并不意味着每个队列只能有一个侦听器。如果所有侦听器都进行相同的处理,并且不依赖于哪个侦听器选择该消息,则它仍然是一对一的。 也可以使用一个队列将一条消息传递给多个侦听器。尽管从技术上讲可以使用触发器,但不建议在MSMQ中使用此方案。 如果您的侦听器仅侦听具有某些特殊属性的消息,并确定哪个侦听器应使用该消息(即您在队列中搜索消息),则您绝对应该使用三个队列。     
        \“该文档明确指出,MSMQ用于”一对一“通信,这意味着侦听器不应超过一个。” 您有此链接吗? MSMQ使用两种传递方法: 1-1:一个发送方,一个目标队列 1-M:一个发件人多播到许多目标队列 另外,您可以在一个队列上有多个侦听器。 听众的数量取决于您。 当然,多个侦听器之间会有争用,因此,如果您只想对消息进行编码/配置,则只希望对其进行处理。     
        听起来好像您需要服务总线-但是,它们往往有些重量级,因此可能会显得过大。使用服务总线,您可以设置发布-订阅方案,在该方案中,任意数量的侦听器都可以订阅消息。 NServiceBus是一种易于使用的服务总线(它建立在MSMQ之上)。有一个免费版本,它的上限是每秒30条消息。 Rhino ESB还声称是轻量级的。     

要回复问题请先登录注册