具有多个消费者的Pika单队列

时间:2018-11-30 05:59:15

标签: python multithreading rabbitmq pika

运行有多个使用者的单个队列的Python程序

我正在寻找队列何时接收到多条消息(例如:10条消息),

有没有办法让多个使用者(例如5个使用者)共享队列中的消息负载,就像每个使用者从队列中消耗2条消息一样?

请向我建议通过创建多个使用者来减少队列负载的其他方法。

1 个答案:

答案 0 :(得分:0)

您想玩consumer prefetch, 这样可以确保单个消费者不会贪婪地获取队列中的所有消息,然后逐个对待它们(这是很常见的情况)。

从文档中:

Channel channel = ...;
Consumer consumer = ...;
channel.basicQos(2); // Per consumer limit
channel.basicConsume("my-queue", false, consumer);

这意味着在任何给定时间,仅允许消费者拥有2条未确认的消息。

直到他确认其中一条消息(处理完该消息应立即执行),他才能选择更多消息。