我实现了多个消费者,他们从单个队列中获取消息,我使用类似于这个例子,除了我正在无限循环中执行 basic.get 进行轮询。
知道如何防止所有消费者之间的竞争,因为只有一个消费者会收到消息,而另一个消费者将继续进行轮询,直到另一条消息到来为止?
我尝试实现一种逻辑,其中一旦收到消息,我就会确认该消息以将其删除,但似乎其他一些队列设法在第一个队列确认并删除它之前获取该消息。
所以每个消费者都得到了信息。
提前致谢
知道如何防止所有消费者之间的竞争,因为只有一个消费者会收到消息,而另一个消费者将继续进行轮询,直到另一条消息到来为止?
你不能,按照你设置的方式。 RabbitMQ 会将消息循环发送给消费者,但只有一个消费者会从队列中接收消息。当单个队列上有多个消费者时,这是 RabbitMQ 的设计初衷。
如果您需要所有消费者接收所有消息,那么您需要更改配置,以便每个消费者都有自己的队列。然后,您需要通过交换器发布消息,该交换器会将消息传递到所有消费者的所有队列。
最简单的方法是使用扇出交换类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)