【发布时间】:2016-08-30 07:29:10
【问题描述】:
我们的系统中有几个 RabbitMQ 队列,我们使用 Spring Integration amqp:inbound-channel-adapter 来消费消息。 Spring 应用程序在 5 个 JBoss 节点上运行(不在集群中)
RabbitMQ 端是一个带有负载均衡器的两个集群节点,具有持久队列,在应用程序端监听器定义非常简单,连接工厂定义如下:
<rabbit:connection-factory id="amqpConnectionFactory" username="${orts.rabbitmq.username}" password="${orts.rabbitmq.password}"
host="${orts.rabbitmq.endpoint}" />
还有几个 inbound-channel-adapter 定义如下:
<amqp:inbound-channel-adapter id="artiqAmqpInboundChannelAdapter"
channel="artiq.queued.action.filter.outbound.channel" error-channel="artiq.recovery.router.channel"
connection-factory="amqpConnectionFactory" header-mapper="amqpHeaderMapper"
queue-names="ortsArtiqQueue" />
当出于某种原因(即部署新配置)我们必须重新启动 RabbitMQ 集群时,我们遇到了意外行为,重新启动后,一个或多个侦听器停止消费消息,我们必须重新启动 JBoss 节点以恢复。
请注意,此行为未绑定到特定队列,每次受影响的队列可能不同。 另请注意,部署的新配置不会修改任何现有队列(例如,当我们添加新队列时)
【问题讨论】:
标签: spring rabbitmq spring-integration spring-rabbit