rabbitmq队列中的多个消费者 - 只有一个获得消息

时间:2015-09-30 11:13:46

标签: python rabbitmq amqp pika

我实现了多个消费者,他们从单个队列中获取消息,我使用类似于this example的方式执行此操作,除了我在无限循环上执行basic.get进行轮询。 / p>

任何想法如何防止所有消费者之间的竞争,因为只有一个消费者会得到消息而另一个消费者会继续进行轮询,直到另一个消息出现?
我试图遵循一个逻辑,一旦我收到消息,我就会删除消息,但似乎其他一些队列,设法在第一个消息之前获取消息并删除消息。 所以每个人都得到了这个信息。

提前致谢

1 个答案:

答案 0 :(得分:9)

  

任何想法如何防止所有消费者之间的竞争,因为只有一个消费者会收到消息而另一个消费者会继续进行轮询,直到另一个消息出现?

你不能设置事物的方式。 RabbitMQ会将消息循环到消费者,但只有一个消费者会从队列中接收消息。这是在RabbitMQ中设计的,当你在一个队列上有多个消费者时。

如果您需要所有消费者接收所有消息,那么您需要更改配置,以便每个消费者拥有它自己的队列。然后,您需要通过交换发布消息,该消息将消息传递给所有消费者的所有队列。

最简单的方法是使用扇出交换类型。