activemq訊息簽收機制:
客戶端成功接收一條訊息的標誌是一條訊息被簽收,成功應答。
訊息的簽收情形分兩種:
1、帶事務的session
如果session帶有事務,並且事務成功提交,則訊息被自動簽收。如果事務回滾,則訊息會被再次傳送。
2、不帶事務的session
不帶事務的session的簽收方式,取決於session的配置。
activemq支援以下三種模式:
session.auto_acknowledge 訊息自動簽收
session.client_acknowledge 客戶端呼叫acknowledge方法手動簽收
textmessage.acknowledge();//手動簽收
session.dups_ok_acknowledge 不是必須簽收,訊息可能會重**送。在第二次重新傳送訊息的時候,訊息
只有在被確認之後,才認為已經被成功地消費了。訊息的成功消費通常包含三個階段:客戶接收訊息、客戶處理訊息和訊息被確認。 在事務性會話中,當乙個事務被提交的時候,確認自動發生。在非事務性會話中,訊息何時被確認取決於建立會話時的應答模式(acknowledgement mode)。
帶事務的session:
生產者必須在生產完資料後手動提交session
session session = connection.createsession(true, session.auto_acknowledge);
。。。。。。。。
session.commit();
生產者不呼叫commit方法訊息無法到達訊息佇列
消費者在消費完資料之後也必須手動提交session
session session = connection.createsession(true, session.auto_acknowledge);
。。。。。。。。
session.commit();
消費者不呼叫commit方法訊息無法從訊息佇列銷毀
不帶事務的session:
1.自動簽收(不靠譜)
session session = connection.createsession(false, session.auto_acknowledge);
2.手動簽收
session session = connection.createsession(false, session.client_acknowledge);
消費者必須顯示呼叫手動簽收的方法進行簽收,否則佇列當中還是存在資料
message.acknowledge();
activemq集合JMS處理非同步訊息
jms 傳送 public static void main string args throws exception session.commit session.close connection.close 原始碼 copy to clipboard列印?public static void m...
Active MQ技術文章 JMS
將已經有的mq的demo 傳送到部落格上 如何部署自己部署mq jml理論 wsad環境下jms非同步通訊全攻略 1 學習其對jms說明部分 使用 apache geronimo 和 jms 構建事件驅動的框架 jms 基本可靠性機制 和 事務機制 jms簡介與activemq實戰 總結的挺好的 配...
JMS訊息集群
jms集群的意義在於提公升系統在處理訊息時的併發能力,建立這樣的集群,有三個步驟 1.配置jms訊息持久化所使用的資料庫 2.配置分布式的jndi環境 3.配置分布式jms集群 在jboss集群中,系統採用hibernate的方式來儲存訊息,所以能夠相容hibernate支援的所有資料庫。jboss...