名詞解釋:
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設置成哪種模式,互不影響。
歡迎提意見