6

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

任何帮助或指针表示赞赏。

4

1 回答 1

3

如果您使用 MassTransit 从 MSMQ 队列分派消息,建议该队列位于盒子本地。

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

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

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

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

于 2009-10-13T10:05:11.350 回答