使用 2 个消费者和多个端点创建单个 RabbitListenerContainerFactory 来监听消息的行为是什么

What will be the behaviour of creating a single RabbitListenerContainerFactory with 2 consumers and multiple endpoints to listen messages

我有一个要求,我有 1 个直接交换器和 5 个不同的队列,它们使用唯一的路由密钥绑定到它。基本上每个队列都用于不同的消费者端点。我正在使用 spring 托管端点注册表和 @RabbitListener。所以注册了 5 个端点。当我实现它时,我创建了一个 RabbitListenerContainerFactory,其 concurrentConsumer 值为 2。但我对此有疑问,如果创建了一个消费者大小为 2 的工厂,那么所有端点将有单独的消费者,或者消费者是每个工厂创建的,这个 containerFactory 将为所有 5 个端点提供服务。因此,如果第 2 个消费者为所有 5 个队列提供服务,那么在第一个队列消息被第一个服务之前,其他队列消费者将处于空闲状态时不会出现负载不平衡吗? 我应该为不同的端点创建单独的 containerFactory 吗?

每个 @RabbitListener 都有自己的容器,每个容器有 2 个消费者。

它是一个容器factory,用于为每个注释方法创建一个容器。把它想象成一个 "template";很像 XML 中的 <rabbit:listener-container/> 元素 - 它有一组通用属性,但每个 <rabbit:listener/> 子元素都有自己的容器。