运行有多个使用者的单个队列的Python程序
我正在寻找队列何时接收到多条消息(例如:10条消息),
有没有办法让多个使用者(例如5个使用者)共享队列中的消息负载,就像每个使用者从队列中消耗2条消息一样?
请向我建议通过创建多个使用者来减少队列负载的其他方法。
答案 0 :(得分:0)
您想玩consumer prefetch, 这样可以确保单个消费者不会贪婪地获取队列中的所有消息,然后逐个对待它们(这是很常见的情况)。
从文档中:
Channel channel = ...;
Consumer consumer = ...;
channel.basicQos(2); // Per consumer limit
channel.basicConsume("my-queue", false, consumer);
这意味着在任何给定时间,仅允许消费者拥有2条未确认的消息。
直到他确认其中一条消息(处理完该消息应立即执行),他才能选择更多消息。