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