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