容器管理
為註解建立的容器不會註冊到應用程式上下文中。您可以透過在 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,以便在當前訊息處理後立即停止,導致任何預取的訊息被重新入隊。這在例如使用獨佔或單活躍消費者時非常有用。