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

Jav*_*aSa 7 python amqp rabbitmq pika

我实现了多个消费者,他们从单个队列中获取消息,我使用类似于此示例的内容进行此操作,除了我在无限循环上执行basic.get进行轮询.

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

提前致谢

Der*_*ley 9

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

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

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

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

  • "但只有一个消费者会从队列中收到消息",这正是我想要的,并没有发生.无论如何我添加了`channel.basiq_qos(prefetch_count = 1)`现在似乎只有一个消费者得到消息而不是全部消息 (4认同)