名詞解釋:隊列
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設置成哪一種模式,互不影響。