ActiveMQ中Session設置的相關理解

名詞解釋:

P:生產者

C:消費者

服務端:P 或者 ActiveMQ服務

客戶端:ActiveMQ服務 或者 C

 

客戶端成功接收一條消息的標誌是這條消息被簽收。成功接收一條消息一般包括如下三個階段: 

1.客戶端接收消息; 

2.客戶端處理消息; 

3.消息被簽收。

 

在不帶事務的 Session 中,一條消息何時和如何被簽收取決於Session的設置。 

1.Session.AUTO_ACKNOWLEDGE 

當客戶端從 receive 或 onMessage成功返回時,Session 自動簽收客戶端的這條消息的收條。

 

 

2.Session.CLIENT_ACKNOWLEDGE 

    客戶端通過調用消息的 acknowledge 方法簽收消息。

 

 

在帶事務的 Session 中,簽收自動發生在事務提交時。如果事務回滾,所有已經接收的消息將會被再次傳送。

 


 

白話總結:

1、對於生產者:服務端端爲P,客戶端爲ActiveMQ服務。  Session設置爲AUTO_ACKNOWLEDGE 和CLIENT_ACKNOWLEDGE ,相對來說區別不是很大,根據情況考慮。

 

2、對於消費者:服務端爲ActiveMQ爲服務,客戶端爲C。 Session設置爲AUTO_ACKNOWLEDGE ,接收到消息(receive 或 onMessage成功返回時),即爲消費成功,然後從隊列裏移除該數據。不關心該數據有沒有正確被處理成我們想要的結果;Session設置爲CLIENT_ACKNOWLEDGE 時,必須手動調用acknowledge 方法才爲消費成功,然後從隊列裏移除該條數據。

 

3、P和C的Session設置成哪種模式,互不影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章