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