我实现了多个消费者,他们从一个队列中获取消息,我是用类似于 本例除了我正在做basic.get的无限循环投票。
有什么办法可以防止所有消费者之间的竞速,即只有一个消费者会收到消息,而另一个消费者会继续做轮询,直到另一个消息到来?我试着实现了一个逻辑,只要我得到消息,我就会ACK它,让消息被删除,但似乎其他队列在第一个队列ACK之前就得到了消息并删除了它。
先谢谢你
有什么办法可以防止所有消费者之间的竞速,即只有一个消费者会得到消息,而另一个消费者会继续做轮询,直到另一个消息到来?
你不能,你设置的方式。RabbitMQ会将消息轮流发送给消费者,但只有一个消费者会收到队列中的消息。这是RabbitMQ的设计,当你在一个队列上有多个消费者时。
如果您需要所有消费者接收所有消息,那么您需要更改配置,使每个消费者都有自己的队列。然后你需要通过一个交换器发布你的消息,将消息传递到所有消费者的所有队列。
最简单的方法就是使用Fanout交换类型。