监听器容器队列
1.3 版本为在监听器容器中处理多个队列引入了多项改进。
容器初始可以配置为监听零个队列。队列可以在运行时添加和移除。当所有预取消息都已处理完毕后,SimpleMessageListenerContainer 会回收(取消并重新创建)所有消费者。DirectMessageListenerContainer 则为每个队列创建/取消单个消费者,而不影响其他队列上的消费者。addQueues、addQueueNames、removeQueues 和 removeQueueNames 方法请参见 Javadoc。
如果并非所有队列都可用,容器会每 60 秒尝试被动声明(并消费)缺失的队列。
此外,如果消费者收到来自 broker 的取消指令(例如队列被删除),消费者会尝试恢复,恢复后的消费者会继续处理任何其他已配置队列上的消息。以前,一个队列上的取消会取消整个消费者,并最终导致容器因队列缺失而停止。
如果你希望永久移除某个队列,应在删除该队列之前或之后更新容器,以避免今后仍尝试从该队列消费。