2015-10-11 73 views
0

我們使用@RabbitListener來偵聽隊列以及何時有消息處理它們。不過,當隊列爲空時,我想要執行一些報告任務,這發生在我們的應用程序剛剛在隊列中處理了大量消息且暫時沒有更多消息時發生。那是我想要報告的時間。我怎麼用@RabbitListener做到這一點?當隊列中沒有消息時,rabbitListener執行任務

這裏是我的代碼:

@RabbitListener(queues = "${consumer.queue}", containerFactory = "ListenerContainerFactory") 
    public void handleMessage(Message message) { 
     processEvent(message); 
    } 

回答

1

正如我answered your other question a few weeks ago存在AMQP(因此春季AMQP)沒有一種機制來通知消費者,目前有在隊列中沒有消息。

我們可以修改容器,在消息處理後沒有消息時觸發ApplicationEvent一次,但這需要修改框架。您的聽衆將不得不實施ApplicationListener才能獲得此類活動。

隨意打開New Feature JIRA Issue如果你願意,我們也許可以看看它。

+0

你說得對,我添加了額外的信息來標記工作的結束,在兔子聽衆中,一旦收到'工作結束'信息,它就開始報告。我是春季AMQP的新手,不確定這是否是一種常見的情況,需要兔子監聽者在隊列爲空時能夠做一些額外的工作,但認爲這將是一個很好的功能。謝謝! – user468587

相關問題