容器管理

为注解创建的容器不会注册到应用程序上下文中。您可以通过调用 RabbitListenerEndpointRegistry bean 上的 getListenerContainers() 来获取所有容器的集合。然后,您可以迭代此集合,例如,停止或启动所有容器或调用注册表本身的 Lifecycle 方法,这将调用每个容器上的操作。

您还可以使用其 id 获取对单个容器的引用,使用 getListenerContainer(String id) — 例如,对于由上面的代码段创建的容器,使用 registry.getListenerContainer("multi")

从 1.5.2 版本开始,您可以使用 getListenerContainerIds() 获取已注册容器的 id 值。

从 1.5 版本开始,您现在可以在 RabbitListener 端点上为容器分配一个 group。这提供了一种机制来获取对容器子集的引用。添加 group 属性会导致将类型为 Collection<MessageListenerContainer> 的 bean 注册到具有组名称的上下文中。

默认情况下,停止容器将取消消费者并在停止之前处理所有预取的消息。从 2.4.14、3.0.6 版本开始,您可以将 forceStop 容器属性设置为 true,以便在处理完当前消息后立即停止,从而导致任何预取的消息被重新排队。例如,如果正在使用独占或单活动消费者,这将非常有用。