控制訊息應答 controlling message acknowledgment 除非jms訊息被應答,否則它不會被認為成功消費掉。
成功的訊息消費順序發生在三個階段:
客戶收到訊息---》客戶處理訊息---》訊息被應答,訊息應答既不是被jms提供者也不是客戶來初始化,而是
依賴於會話應答模式。
會話應答模式
1,在事務化的會話中,應答會在事務提交時自動發生。,,如果事務回滾,所有的消費了的訊息會在topic或則queue中恢復,而未被消費。如果是傳送訊息,則這次傳送會被取消。
2,在非事務的會話中,何時,何種方式應答依賴於createsession
方法的第二個引數被指定的值。三個可能的引數值時:
session.auto_acknowledge
:會話自動應答客戶收到的訊息,客戶收到了訊息就會自動應答,而不管之後客戶對訊息的處理會不會出現異常,只保證使用者收到了訊息,其它的不保證。
session.client_acknowledge
: 客戶端手動確認應答,客戶端通過呼叫接收到的message的acknowledge()方法來確認訊息被正確消費了,否則此訊息將任然存在。
ActiveMQ的JMS訊息可靠機制
activemq訊息簽收機制 客戶端成功接收一條訊息的標誌是一條訊息被簽收,成功應答。訊息的簽收情形分兩種 1 帶事務的session 如果session帶有事務,並且事務成功提交,則訊息被自動簽收。如果事務回滾,則訊息會被再次傳送。2 不帶事務的session 不帶事務的session的簽收方式,...
JMS實戰之二 JMS中的概念
理解訊息傳送系統的概念。訊息傳送系統由訊息傳送客戶端和訊息中介軟體所組成。客戶端把訊息傳送到訊息中介軟體,訊息中介軟體隨後再將這些訊息分發給其他客戶端。在這裡,訊息中介軟體實際上實現了客戶端之間的去耦,客戶端就是使用jms api的乙個業務應用程式或者元件。如下圖 使用jms api在客戶端1和客戶...
TCP中的延遲應答與捎帶應答
1.1 應答方法 通常乙個資料段可以返回乙個ack應答,但是接收端如果立刻返回ack應答,會讓這個資料段中的視窗大小值比較小。假設我們接收緩衝區的為2m,收到了1m的資料,如果立刻應答,返回的視窗就是1m。實際上接收端處理資料可以很快,很短的時間內就把接收到的1m資料處理掉了。這種情況下,接收緩衝區...