ActiveMQ中Session設置的相關理解

名詞解釋:隊列

P:生產者事務

C:消費者io

服務端:P 或者 ActiveMQ服務方法

客戶端:ActiveMQ服務 或者 C總結

 

客戶端成功接收一條消息的標誌是這條消息被簽收。成功接收一條消息通常包括以下三個階段: 數據

1.客戶端接收消息; 客戶端

2.客戶端處理消息; 服務端

3.消息被簽收。消息

 

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

1.Session.AUTO_ACKNOWLEDGE 

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

 

 

2.Session.CLIENT_ACKNOWLEDGE 

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

 

 

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

 

 

白話總結:

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

 

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

 

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

相關文章
相關標籤/搜索