跳到主要内容

容器管理

DeepSeek V3 中英对照 Container Management

为注解创建的容器并未注册到应用程序上下文中。你可以通过在 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,以便在当前消息处理完毕后立即停止,这会导致任何预取的消息被重新排队。这在某些场景下非常有用,例如当使用独占或单活跃消费者时。