ActiveMQ消息的可靠性機制(轉)


文章轉自:http://www.linuxidc.com/Linux/2013-02/79664.htm

 

1.JMS消息確認機制

JMS消息只有在被確認之后,才認為已經被成功地消費了。消息的成功消費通常包含三個階段:客戶接收消息、客戶處理消息和消息被確認。在事務性會話中,當一個事務被提交的時候,確認自動發生。在非事務性會話中,消息何時被確認取決於創建會話時的應答模式(acknowledgement mode)。該參數有以下三個可選值:

Session.AUTO_ACKNOWLEDGE。當客戶成功的從receive方法返回的時候,或者從MessageListener.onMessage方法成功返回的時候,會話自動確認客戶收到的消息。

Session.CLIENT_ACKNOWLEDGE。 客戶通過消息的acknowledge方法確認消息。需要注意的是,在這種模式中,確認是在會話層上進行:確認一個被消費的消息將自動確認所有已被會話消 費的消息。例如,如果一個消息消費者消費了10個消息,然后確認第5個消息,那么所有10個消息都被確認。

Session.DUPS_ACKNOWLEDGE。 該選擇只是會話遲鈍第確認消息的提交。如果JMS provider失敗,那么可能會導致一些重復的消息。如果是重復的消息,那么JMS provider必須把消息頭的JMSRedelivered字段設置為true。

2.ActiveMQ消息確認機制

ActiveMQSession,實現了JMS的session,QueueSession, TopicSession

ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE 每條消息都必須顯式調用acknowledge方法確認消息。

3.消息持久性

JMS 支持以下兩種消息提交模式:

DeliveryMode.PERSISTENT  指示JMS provider持久保存消息,以保證消息不會因為JMS provider的失敗而丟失。 消息持久化在硬盤中,ActiveMQ持久化有三種方式:AMQ、KahaDB、JDBC。

DeliveryMode.NON_PERSISTENT  不要求JMS provider持久保存消息,消息存放在內存中,讀寫速度快,在JMS服務停止后消息會消失,沒有持久化到硬盤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM