1. 程式人生 > >Rabbit MQ 自定義監聽器容器(Listener Container)的啟動與停止

Rabbit MQ 自定義監聽器容器(Listener Container)的啟動與停止

專案中會遇到,MQ佇列的監聽是在某一前提條件準備好的情況下才啟動,比如MQ接收到一系列資料,這些資料的儲存依賴於另外一個MQ訊息的一些配置接收之後才能完成。

指定屬性autoStartup為false,並啟動對應的listener id

@RabbitHandler
@RabbitListener(queues = "Message", autoStartup= "false", id = "Message")
public void process(String body) {

}

根據listener ID獲取對應容器,進行設定 stop/start

@Resource
private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;

MessageListenerContainer container = rabbitListenerEndpointRegistry.getListenerContainer("Message");
if(!container.isRunning()){
   container.start();
   log.info("started container");
}