2015-03-03 38 views
1

試圖爲包含各種子流的mule流實現一個事務方法,並且每個子流都包含一些使用invoke組件的spring bean中的數據庫插入。Mule:子流的事務管理器

<amqp:inbound> 
    <flow ref="subflow1"> 
    <flow ref="subflow2"> 
    <flow ref="subflow3"> 
<amqp:outbound> 

其中subflow1和子流2都包含呼叫服務豆這是調用DAO數據庫操作(使用Hibernate的Session).Subflow3是調用外部系統。

<flow name="subflow1"> 
     <invoke object-ref="serviceBean" method="databaseOperation" methodArguments="#[message.inboundProperties]"/> 
</flow> 

推薦的方式,如果任何一個子流的失敗,在早期的子流程完成所有插入語句應該回退執行事務管理的最佳方法。

回答

0
  • 將一個transactional範圍在你的流量裁判,
  • 使用sub-flow而不是flow您的子流,以便在異常情況發生他們會泡到調用者流的事務範圍。
+0

謝謝@ david.But不是更好使用流程,因爲我們可以指定流程的異常策略,否則在子流程中它將繼承主流程的異常策略。 – 2015-03-04 15:06:43

+0

您可以使用'流程',但必須非常小心您的本地異常策略,以避免在需要時阻止事務回滾。 – 2015-03-04 18:11:30