我们运行多个并发RabbitMQ使用者,每个使用者在一个循环中执行“basicGet”。我们看到单个消费者获得了大部分消息。有没有办法在所有消费者之间更均匀地传播消息?基本上我们可以以某种方式中断RabbitMQ为第一个消费者提供服务并切换到下一个消费者。注意:我们必须拉消息(basicGet)并且不能切换到push(basicConsume)谢谢。
答案 0 :(得分:0)
将使用者预取限制设置为1,并将使用者置于noAck:false模式。
...可能是autoAck:false,而不是noAck ......
这将强制您的消费者一次只检索1条消息,并要求您手动确认消息。
有了这两件事,你的消息应该更均匀地分布在多个消费者身上 - 假设队列中有多条消息