比方说,我有一条消息需要大约1秒钟来由消费者处理。如果我将100条持久消息发布到单个 RabbitMQ 队列中,而该队列上没有任何使用者,则在完成发布后,我针对同一队列启动多个使用者(半秒钟内启动它们)首先开始获取所有100条消息(一个接一个),而其他则不发送。因此,第一个使用者处理这100条消息需要100秒,而如果两个使用者都按原先的方式收到消息,则将花费50秒。如果我让两个消费者保持联系并且又发布了100条消息,那么他们都将收到它们的轮询(每个50条)。
这是正常行为吗?
答案 0 :(得分:0)
在Dolt指出频道预取设置之后,我找到了答案。
channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);