容器管理

为注解创建的容器不会向应用程序上下文注册。可以通过调用 `RabbitListenerEndpointRegistry` bean 上的 `getListenerContainers()` 方法来获取所有容器的集合。然后,可以迭代此集合,例如,启动或停止所有容器,或者在注册表本身调用 `Lifecycle` 方法,这将对每个容器调用操作。

还可以使用其 `id` 获取单个容器的引用,使用 `getListenerContainer(String id)` —— 例如,上面代码片段创建的容器,使用 `registry.getListenerContainer("multi")`。

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

从 1.5 版本开始,现在可以在 `RabbitListener` 端点上为容器分配一个 `group`。这提供了一种机制来获取对容器子集的引用。添加 `group` 属性会导致在上下文中注册一个 `Collection` 类型的 bean,其名称为组名。

默认情况下,停止容器将取消消费者并在停止之前处理所有预取的消息。从 2.4.14、3.0.6 版本开始,可以将 `forceStop` 容器属性设置为 true 以在处理当前消息后立即停止,导致任何预取的消息重新入队。例如,如果使用独占或单活动消费者,这将非常有用。