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