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