JMS學習五(ActiveMQ的本地事務)

2022-06-11 21:36:14 字數 1203 閱讀 4249

1、activemq的本地事務

在乙個jms客戶端,可以使用本地事務來組合訊息的傳送和接收。jms session介面提供了commit和rollback方法。事務提交意味著生產的所有訊息被傳送,消費的所有訊息被確認;事務回滾意味著生產的所有訊息被銷毀,消費的所有訊息被恢復並重新提交,除非它們已經過期。 事務性的會話總是牽涉到事務處理中,commit或rollback方法一旦被呼叫,乙個事務就結束了,而另乙個事務被開始。關閉事務性會話將回滾其中的事務。 需要注意的是,如果使用請求/回覆機制,即傳送乙個訊息,同時希望在同乙個事務中等待接收該訊息的回覆,那麼程式將被掛起,因為直到事務提交,傳送操作才會真正執行。 需要注意的還有乙個,訊息的生產和消費不能包含在同乙個事務中。

在事務狀態下進行傳送操作,訊息並未真正投遞到中介軟體,而只有進行session.commit操作之後,訊息才會傳送到中介軟體,再**到適當的消費者進行處理。如果是呼叫rollback操作,則表明,當前事務期間內所傳送的訊息都取消掉。

2、關於activemq本地事務的用法

public

class

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...