我有一个要求,我有 1 个直接交换器和 5 个不同的队列通过唯一的路由 key 绑定(bind)到它。基本上每个队列都适用于不同的消费者端点。我正在使用 @RabbitListener 来使用 spring 管理的端点注册表。所以注册了 5 个端点。在实现它时,我创建了一个 RabbitListenerContainerFactory
,其 concurrentConsumer
值为 2。但是我对此有一个问题,是否有一个使用消费者大小创建的工厂如 2 所示,所有端点都将拥有单独的消费者,或者消费者是按工厂创建的,并且此 containerFactory
将为所有 5 个端点提供服务。因此,如果 2 个消费者为所有 5 个队列提供服务,是否会出现负载不平衡,导致其他队列消费者将处于空闲状态,直到第一个队列消息得到服务为止?
我应该为不同的端点创建单独的 containerFactory
吗?
最佳答案
每个@RabbitListener
有自己的容器,每个容器有 2 个消费者。
它是一个容器工厂,用于为每个带注释的方法创建一个容器。将其视为"template";很像 <rabbit:listener-container/>
XML 中的元素 - 它具有一组通用属性,但每个 <rabbit:listener/>
子元素有自己的容器。
关于rabbitmq - 创建具有 2 个消费者和多个端点来监听消息的单个 RabbitListenerContainerFactory 的行为是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500864/