是否可以让多个消费者监听单个 MSMQ 实例并使用 Selective Consumer 接口让每个消费者处理不同的消息子集?我似乎无法使用 pub/sub 让这个场景正常工作 - 队列上的单个消费者工作正常,但是当使用 >1 个消费者(同一可执行文件的多个实例)时,任何地方都不会出现任何消息。据我了解,这不是“竞争消费者”的情况,因为只有一个消费者会处理一条消息。
任何帮助或指针表示赞赏。
是否可以让多个消费者监听单个 MSMQ 实例并使用 Selective Consumer 接口让每个消费者处理不同的消息子集?我似乎无法使用 pub/sub 让这个场景正常工作 - 队列上的单个消费者工作正常,但是当使用 >1 个消费者(同一可执行文件的多个实例)时,任何地方都不会出现任何消息。据我了解,这不是“竞争消费者”的情况,因为只有一个消费者会处理一条消息。
任何帮助或指针表示赞赏。
如果您使用 MassTransit 从 MSMQ 队列分派消息,建议该队列位于盒子本地。
话虽如此,如果您有多个进程从同一个队列中读取以分配消息负载,则可以使用选择性接收仅在每个实例中使用与该进程相关的消息。
例如,如果您有多个向服务发送消息的应用程序实例,并且该服务使用相关消息进行响应,您可以通过标识符订阅相关消息,并且只有那些订阅的消息将被传递。未被选中的消息将保留在队列中,直到被任何感兴趣的进程处理。
由于这种模式,强烈建议对消息设置过期时间,以便忽略的响应不会随着时间的推移阻塞队列。
通过消息传递复制请求/响应模式时,这种情况非常常见。