1、activemq的本地事務
在乙個jms客戶端,可以使用本地事務來組合訊息的傳送和接收。jms session介面提供了commit和rollback方法。事務提交意味著生產的所有訊息被傳送,消費的所有訊息被確認;事務回滾意味著生產的所有訊息被銷毀,消費的所有訊息被恢復並重新提交,除非它們已經過期。 事務性的會話總是牽涉到事務處理中,commit或rollback方法一旦被呼叫,乙個事務就結束了,而另乙個事務被開始。關閉事務性會話將回滾其中的事務。 需要注意的是,如果使用請求/回覆機制,即傳送乙個訊息,同時希望在同乙個事務中等待接收該訊息的回覆,那麼程式將被掛起,因為直到事務提交,傳送操作才會真正執行。 需要注意的還有乙個,訊息的生產和消費不能包含在同乙個事務中。
在事務狀態下進行傳送操作,訊息並未真正投遞到中介軟體,而只有進行session.commit操作之後,訊息才會傳送到中介軟體,再**到適當的消費者進行處理。如果是呼叫rollback操作,則表明,當前事務期間內所傳送的訊息都取消掉。
2、關於activemq本地事務的用法
publicclass
sender
//手動提交開啟的事務
session.commit();
//釋放連線
if (connection != null
)
} }
2.1 開啟事務
//3、通過connection物件建立session會話(上下文環境物件),
//引數一,表示是否開啟事務
//引數二,表示的是簽收模式,一般使用的有自動簽收和客戶端自己確認簽收
//第乙個引數設定為true,表示開啟事務
//開啟事務後,記得要手動提交事務
session session =connection.createsession(boolean.true,
session.auto_acknowledge);
2.2 提交事務
//7、最後使用jms規範的textmessage形式建立資料(通過session物件)
//並利用messageproducer的send方法傳送資料
for (int i = 0; i < 5; i++)
//手動提交開啟的事務
session.commit();
ActiveMQ的JMS訊息可靠機制
activemq訊息簽收機制 客戶端成功接收一條訊息的標誌是一條訊息被簽收,成功應答。訊息的簽收情形分兩種 1 帶事務的session 如果session帶有事務,並且事務成功提交,則訊息被自動簽收。如果事務回滾,則訊息會被再次傳送。2 不帶事務的session 不帶事務的session的簽收方式,...
Active MQ技術文章 JMS
將已經有的mq的demo 傳送到部落格上 如何部署自己部署mq jml理論 wsad環境下jms非同步通訊全攻略 1 學習其對jms說明部分 使用 apache geronimo 和 jms 構建事件驅動的框架 jms 基本可靠性機制 和 事務機制 jms簡介與activemq實戰 總結的挺好的 配...
activemq集合JMS處理非同步訊息
jms 傳送 public static void main string args throws exception session.commit session.close connection.close 原始碼 copy to clipboard列印?public static void m...