2016-05-30 109 views
1

我们运行多个并发RabbitMQ使用者,每个使用者在一个循环中执行“basicGet”。我们看到单个消费者获得大部分消息。是否有办法在所有消费者之间更均匀地传播消息?基本上,我们可以以某种方式中断服务第一个消费者的RabbitMQ并切换到下一个。注意:我们必须拉消息(basicGet)并且不能切换到推(basicConsume)谢谢。从单个RabbitMQ队列中并发获取基本信息

+1

'不能转推(basicConsume)'我读过的最悲惨的事情之一今天:) – cantSleepNow

回答

0

设置消费预取限制为1,并将消费者置于noAck:false模式。

...这可能是AUTOACK:假的,而不是诺亚克...

这将迫使你的消费者一次只检索1个消息,并需要您手动ACK消息。

有了这两样东西,你的信息更均匀地分布在多个消费者应分配 - 假设你已经在队列中的多个消息

+0

谢谢。这正是我正在寻找的方向(RabbitMQ接口配置)。只是我不认为prefetch与basicGet相关 - 这是一个basicCOnsume的事情。现在我需要为basicGet尝试“手动”确认它是否有帮助。再次感谢你。 – Ken

+0

我认为你对预取是正确的,因为basicGet一次只能抓取一条消息。 :) –

相关问题