使用 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/>
子元素都有自己的容器。
我有一个要求,我有 1 个直接交换器和 5 个不同的队列,它们使用唯一的路由密钥绑定到它。基本上每个队列都用于不同的消费者端点。我正在使用 spring 托管端点注册表和 @RabbitListener
。所以注册了 5 个端点。当我实现它时,我创建了一个 RabbitListenerContainerFactory
,其 concurrentConsumer
值为 2。但我对此有疑问,如果创建了一个消费者大小为 2 的工厂,那么所有端点将有单独的消费者,或者消费者是每个工厂创建的,这个 containerFactory
将为所有 5 个端点提供服务。因此,如果第 2 个消费者为所有 5 个队列提供服务,那么在第一个队列消息被第一个服务之前,其他队列消费者将处于空闲状态时不会出现负载不平衡吗?
我应该为不同的端点创建单独的 containerFactory
吗?
每个 @RabbitListener
都有自己的容器,每个容器有 2 个消费者。
它是一个容器factory,用于为每个注释方法创建一个容器。把它想象成一个 "template";很像 XML 中的 <rabbit:listener-container/>
元素 - 它有一组通用属性,但每个 <rabbit:listener/>
子元素都有自己的容器。