RabbitMQ MassTransit 批量竞争消费者

问题描述 投票:0回答:2

我已经设置了事件

ExampleEvent
的批量消费者,并将其设置为具有
ConcurrencyLimit = 16
MessageLimit = 100
TimeLimit = 5 sec
并按
ExampleEvent.GroupingKey
字段分组。

这工作正常,并以消费者身份显示在 Rabbit 上,并带有

PrefetchCount = 1600
。问题是我有一个多 Pod 环境,并且有多个这样的消费者连接到同一队列。我读到 Rabbit 使用循环算法分发消息,但我也读到它会尝试使一个消费者饱和,直到达到未确认消息的
PrefetchCount
限制。情况似乎并非如此(或者也许我错过了一些东西?)。

现在的主要问题是,一些本来可以与消费者 1 上的其他消息一起批处理的消息被发送到消费者 2(副本)。根据日志,它们的拍摄时间间隔不到一秒,而且远未达到消息限制。

是否有可能以某种方式强制它们在消费者 1 上进行批量处理?

rabbitmq masstransit
2个回答
1
投票

当运行同一服务的多个实例/pod 时,队列上的消息将在所有实例/pod 之间进行负载均衡。 RabbitMQ 中无法控制这些消息的方向,使它们仅发送到特定实例。


0
投票

也许您可以在消费者配置上使用 SingleActiveConsumer 属性。

© www.soinside.com 2019 - 2024. All rights reserved.