RabbitMQ MassTransit批处理竞争消费者

jpfvwuh4  于 2023-05-17  发布在  RabbitMQ
关注(0)|答案(1)|浏览(138)

我已经设置了一个事件ExampleEvent的批处理消费者,并将其设置为具有ConcurrencyLimit = 16MessageLimit = 100TimeLimit = 5 sec和grouping by ExampleEvent.GroupingKey字段。
这工作正常,并在Rabbit上显示为使用PrefetchCount = 1600的消费者。问题是,我有一个多pod环境,并且有多个这样的消费者连接到同一个队列。我读到Rabbit使用循环算法分发消息,但是我也读到它会尝试饱和一个消费者,直到达到PrefetchCount的未确认消息限制。这似乎不是这样的(或者我错过了什么?)).
现在的主要问题是,一些原本可以与消费者1上的其他消息一起进行批处理的消息被发送到消费者2(副本)。根据日志,它们在不到一秒的时间内被拍摄,并且远远没有达到消息限制。
是否有可能以某种方式强制将它们批处理到消费者1?

k4emjkb1

k4emjkb11#

当运行同一服务的多个示例/Pod时,队列上的消息将在所有示例/Pod之间进行负载均衡。在RabbitMQ中,没有办法控制这些消息的方向,使它们只能到达特定的示例。

相关问题