rabbitmq - 创建具有 2 个消费者和多个端点来监听消息的单个 RabbitListenerContainerFactory 的行为是什么

标签 rabbitmq spring-amqp spring-rabbit

我有一个要求,我有 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/

相关文章:

spring - 如何使用 Spring Rabbitmq 连接到多个 Rabbitmq 节点?

如果接收器未运行,Node.js RabbitMQ 消息会丢失

rabbitmq - 保存以跨应用程序共享rabbitmq用户?

spring - 了解、替换、配置和修改 Spring Rabbit (AMQP) 线程池 : A list of questions

java - 是否可以使用 Java 应用程序将 JSON 对象传递给 RabbitMQ 队列?

java - rabbitmq AlreadyClosedException

java - Spring AMQP动态创建RabbitTemplate和SimpleMessageListenerContainer,报错RabbitTemplate is not配置为MessageListener

java - Spring amqp消费者在网络故障后不会重新连接到队列

java - 在 Spring AMQP 中使用 Lyra 风格处理重新连接/重试

spring-amqp - Spring RabbitTemplate-如何在发布者确认模式下获取 NACK 的已发布消息