监听器容器队列

1.3 版本对监听器容器中处理多个队列进行了多项改进。

容器最初可以配置为监听零个队列。可以在运行时添加和删除队列。`SimpleMessageListenerContainer`在所有预取的消息都处理完毕时会回收(取消并重新创建)所有消费者。`DirectMessageListenerContainer`为每个队列创建/取消单个消费者,而不会影响其他队列上的消费者。有关 `addQueues`、`addQueueNames`、`removeQueues`和`removeQueueNames`方法,请参见Javadoc

如果并非所有队列都可用,容器会尝试每 60 秒被动声明(并从中消费)缺失的队列。

此外,如果消费者从代理接收取消消息(例如,如果删除了队列),消费者会尝试恢复,并且恢复的消费者将继续处理任何其他已配置队列中的消息。以前,一个队列上的取消会取消整个消费者,最终由于缺少队列而导致容器停止。

如果要永久删除队列,应在删除队列之前或之后更新容器,以避免将来尝试从中进行消费。