容器管理
为注解创建的容器未在应用程序上下文中注册。
你可以通过在 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,以便在当前消息处理后立即停止,导致任何预取的消息被重新排队。
这对于,例如,使用排他性或单一活动消费者的情况很有用。