【发布时间】:2015-12-28 03:41:32
【问题描述】:
我实现了多个消费者,他们从单个队列中获取消息,我正在使用类似于 this example 的东西来执行此操作,除了我在无限循环上执行 basic.get 以进行轮询。
知道如何防止所有消费者之间的竞争,因为只有一个消费者会收到消息,而另一个消费者会继续进行轮询,直到另一条消息到来?
我尝试实现一个逻辑,在该逻辑中,一旦我收到消息,我就确认它以删除消息,但似乎其他一些队列在第一个队列确认并删除它之前设法获取了消息。
所以每个消费者都收到了消息。
提前致谢
【问题讨论】:
-
如何在队列中发布消息?你是怎么吃的?我是否正确理解所有您的消费者收到消息,而不仅仅是一个 - 但您希望只有一个客户收到它?还是只有一个客户收到消息,而您希望每个人都收到?
-
使用 channel.basic_publish -direct 发布,routing_key 使用 basic_get 使用它,就像上面的示例一样
-
我所有的消费者都会收到消息,我希望第一个收到消息的人会处理它,并且只有一个消费者会从队列中获取每条消息,即可用的那个