ActiveMQ 消息顯式確認問題一則

 問題描述:java

     1.消費者實現JMS的消息監聽接口javax.jms.MessageListener,項目啓動時啓動MQ消費者session

     2.消息確認機制使用ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE。ide

     3.在執行onMessage()後,沒有顯式的確認消息,消息沒有從消息隊列中刪除spa

     4.問題來了,沒有顯式確認的消息永久留在消息隊列中,不會再次被讀取接口

 

 緣由分析:隊列

    1.MQ消息確認超時機制(發送消息,等待半小時,開啓MQ消費者消息被消費)消息隊列

    2.MQ消息重發次數超過上限,再也不重發(經過打印,發現MQ消息裏面帶有一個參數,記錄的重發次數,新啓動一個消費者,屢次重發的消息成功被消費)it

    3.懷疑MQ消費者對讀取過的消息進行標識了的,從新啓動消費者,沒有消費的消息能成功被消費io

 

 結論:class

    MQ的session會標記讀取過的消息,從新建立session便可。

相關文章
相關標籤/搜索