MassTransit中单个队列的多个使用者

时间:2009-09-08 15:52:52

标签: msmq messaging masstransit

是否有可能让几个消费者在一个MSMQ实例上进行监听,并使用Selective Consumer接口让每个消费者处理一个不同的消息子集?我似乎无法使用pub / sub使这个场景正常工作 - 队列上的单个消费者工作正常,但是当使用> 1个消费者(同一个可执行文件的多个实例)时,任何地方都不会出现任何消​​息。据我所知,这不是“竞争消费者”的情况,因为只有一个消费者会处理一条消息。

感谢任何帮助或指示。

1 个答案:

答案 0 :(得分:2)

如果您使用MassTransit从MSMQ队列调度消息,则建议该队列是该框的本地队列。

话虽这么说,如果您有多个进程从同一队列中读取以分发消息负载,您可以使用选择性接收来仅消耗每个实例中与该进程相关的消息。

例如,如果您有多个应用程序实例向服务发送消息,并且该服务使用相关消息进行响应,则可以按标识符订阅相关消息,并且仅传递那些订阅消息。未选中的消息将保留在队列中,直到任何感兴趣的进程处理。

由于这种模式,强烈建议在消息上设置过期,这样忽略的响应不会随着时间的推移阻塞队列。

在通过消息传递复制请求/响应模式时,这种情况非常常见。