本文簡單介紹一下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 動態接...