Container Management

针对注解创建的容器未在应用程序上下文中注册。你可以通过调用`RabbitListenerEndpointRegistry` Bean 上的 getListenerContainers() 来获取所有容器的集合。然后,你可以对该集合进行迭代,例如,停止或启动所有容器或调用注册表本身上的 Lifecycle 方法,这将在每个容器上调用这些操作。

也可以使用 id 通过 getListenerContainer(String id) 引用单个容器,例如,上面的代码段创建的容器 registry.getListenerContainer("multi")

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

从版本 1.5 开始,现在可以将 group 分配给 RabbitListener 端点的容器。这提供了一种机制来引用容器的子集。添加 group 属性将在上下文中使用组名注册类型为 Collection<MessageListenerContainer> 的 Bean。

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