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,以便在处理完当前消息后立即停止,导致重新排列任何预取消息。例如,当使用独占或单活动消费者时,这将会很有用。