JMS訊息可靠機制
阿新 • • 發佈:2018-11-09
ActiveMQ訊息簽收機制:
客戶端成功接收一條訊息的標誌是一條訊息被簽收,成功應答。
訊息的簽收情形分兩種:
1、帶事務的session
如果session帶有事務,並且事務成功提交,則訊息被自動簽收。如果事務回滾,則訊息會被再次傳送。
2、不帶事務的session
不帶事務的session的簽收方式,取決於session的配置。
Activemq支援一下三種模式:
Session.AUTO_ACKNOWLEDGE 訊息自動簽收
Session.CLIENT_ACKNOWLEDGE 客戶端呼叫acknowledge方法手動簽收
textMessage.acknowledge();//手動簽收
Session.DUPS_OK_ACKNOWLEDGE 不是必須簽收,訊息可能會重複傳送。在第二次重新傳送訊息的時候,訊息
只有在被確認之後,才認為已經被成功地消費了。訊息的成功消費通常包含三個階段:客戶接收訊息、客戶處理訊息和訊息被確認。 在事務性會話中,當一個事務被提交的時候,確認自動發生。在非事務性會話中,訊息何時被確認取決於建立會話時的應答模式(acknowledgement mode)。該引數有以下三個可選值:
Number Of Consumers 消費者 這個是消費者端的消費者數量
Number Of Pending Messages 等待消費的訊息 這個是當前未出佇列的數量。可以理解為總接收數-總出佇列數
Messages Enqueued 進入佇列的訊息 進入佇列的總數量,包括出佇列的。 這個數量只增不減
Messages Dequeued 出了佇列的訊息 可以理解為是消費這消費掉的數量