Rabbit MQ 自定義監聽器容器(Listener Container)的啟動與停止
阿新 • • 發佈:2018-12-20
專案中會遇到,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"); }