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