Apache Camel框架之事務控制

2021-06-14 09:38:19 字數 1523 閱讀 7691

本文簡單介紹一下apache camel如何對route進行事務控制,首先介紹整個route只涉及到乙個事務參與者的情況,然後再介紹route中涉及到多個事務參與者的情況.camel是通過和spring的框架整合進行事務控制的.

1,整個route只有乙個事務參與者,"區域性事務",這裡用jms的例子,後台的mq為activemq,示例圖如下:(**於camel in action)

route的**如下:

public class jmstransaction extends routebuilder 

}

spring配置如下:

com.test.camel.transaction.jms

route定義的邏輯為從queue裡取訊息,然後進行一系列的處理(process(p0).process(p1)),的意思是通過這個jms進行的訊息訪問是有事務控制的.上面的route在process(p1)裡丟擲異常,txmanager會進行rollback處理.(在activemq裡,訊息缺省會redelivery到客戶端6次,如果繼續異常,訊息會放到deadletter queue裡(activemq.dlq)),需要在acivemq的配置檔案activemq.xml裡配置如下:(non-persistent的queue的訊息出錯也轉到dead letter queue)

">

如果的話,訊息在重發了6次後會丟失.

如果上面例子中的事務參與者是資料庫的話,道理與之類似,只是配置的transaction manager不同,如:

camel裡使用activemq jms的例子可以參照

2,camel裡的全域性事務,乙個route裡有多個事務參與者,示例圖如下:(**於camel in action)

route的定義如下:

public class xatransaction extends routebuilder 

}public class sqlbean

}

route的邏輯是從queue裡取訊息,然後運算元據庫,然後做後續其他操作(process(p1)),這裡的process(p1)如果丟擲異常的話,取訊息和資料庫操作都回滾,

如果整個route都成功完成的話,取訊息和資料庫操作提交.

atomikos的主頁

spring的配置如下:

com.test.camel.transaction.xa

xadbms

oracle.jdbc.xa.client.oraclexadatasource

******jdbc:oracle:thin:@147.151.240.***:1521:orcl

Apache Camel框架之FTP路由

在做專案整合型別的專案的時候,經常會有這樣的需求,使用者或者別的系統將檔案傳到乙個ftp server,然後系統從ftp server取檔案進行相應的處理.可以參照這個 2,在camel裡實現路由 camelcontext context new defaultcamelcontext contex...

SpringBoot框架之事務詳解

事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。是為解決資料安全操作提出的,事務控制實際上就是控制資料的安全訪問。spring事務處理詳解 這裡主要講宣告式註解 transactional。步驟如下所示 spring...

規則引擎(Apache camel) 學習五

1.recipient list 接收者列表 介紹 怎麼使用條件判斷向若干可能的路由路徑中的某一條路徑傳送訊息。那麼如何做到根據判斷條件,向若干可能的路徑中的其中多條路徑傳送同一條訊息呢?又或者向若干條可能的路徑全部傳輸同一條訊息呢?靜態接收者列表 static recipient list 動態接...