Listener Container Queues

  • 能够动态添加和移除队列。

  • 提高了容错性,当一个队列不可用时,容器会自动重试。

  • 当一个队列被移除时,容器会尝试恢复处理其他队列的消息。

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

容器最初可以配置为监听零队列。队列可以在运行时添加和删除。SimpleMessageListenerContainer 循环回收(取消并重新创建)所有消费者,当已处理任何预取的消息时。DirectMessageListenerContainer 为每个队列创建/取消单个消费者,而不影响其他队列上的消费者。请参阅 addQueuesaddQueueNamesremoveQueuesremoveQueueNames 方法的 Javadoc

如果并非所有队列都可用,该容器会尝试以静默方式声明(然后消费)缺失队列,每 60 秒执行一次。

另外,如果使用者从代理接收到了取消操作(例如,如果某个队列被删除),使用者会尝试恢复,而恢复的使用者会继续处理自其他已配置队列收到的消息。以前,取消一个队列的操作会取消整个使用者,最终,容器会由于缺失队列而停止。

如果你想永久地移除一个队列,你应该在删除队列之前或之后更新容器,以避免将来尝试从该队列消费。