2014-09-30 45 views
0

我有一個流程,我需要一次寫入3個表格,從調用Web服務。這將是一種單向服務。所以入站是Web服務,出站是帶有3個插入的JDBC。JDBC事務

這些表是父表和2個子表,它們需要按該順序寫入。我是否需要使用同步流程來避免多個線程以及我應該使用哪個事務?我猜它是簡單的事務,因爲所有的表都在同一個數據庫中。下面的定義會起作用嗎?

<flow name="xxx" doc:name="xxx" processingStrategy="synchronous"> 
    <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="3366" doc:name="HTTP" /> 
    <transactional action="ALWAYS_BEGIN"> 
    <jdbc:outbound-endpoint queryKey="insert" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 1"> 
     <jdbc:transaction action="ALWAYS_JOIN" /> 
     <jdbc:query key="insert" value="insert into Parent values (#[payload], 'Test 1')" /></jdbc:outbound-endpoint> 
    <jdbc:outbound-endpoint queryKey="insert2" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 2"> 
     <jdbc:transaction action="ALWAYS_JOIN" /> 
     <jdbc:query key="insert2" value="insert into ChildA values (#[payload + 1], 'Test 2')" /></jdbc:outbound-endpoint> 
    <jdbc:outbound-endpoint queryKey="insert3" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 2"> 
     <jdbc:transaction action="ALWAYS_JOIN" /> 
     <jdbc:query key="insert3" value="insert into ChildB values (#[payload + 1], 'Test 2')" /></jdbc:outbound-endpoint> 
    </transactional> 
</flow> 

回答

0
  1. 參與交易的所有端點本身將是同步的。
  2. 是的標準交易是好的,如果他們都使用相同的connector

你可以使用:

<transactional> 
     <jdbc:outbound-endpoint queryKey="insert" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 1"> 
      <jdbc:query key="insert" value="insert into Parent values (#[payload], 'Test 1')" /> 
     </jdbc:outbound-endpoint> 
     <jdbc:outbound-endpoint queryKey="insert2" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 2"> 
      <jdbc:query key="insert2" value="insert into ChildA values (#[payload + 1], 'Test 2')" /> 
     </jdbc:outbound-endpoint> 
     <jdbc:outbound-endpoint queryKey="insert3" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 2"> 
      <jdbc:query key="insert3" value="insert into ChildB values (#[payload + 1], 'Test 2')" /> 
     </jdbc:outbound-endpoint> 
    </transactional> 

騾子將找到的第一個端點,並開始了它的事務,即其他應加入

+0

感謝瑞安會,這也方便了刀片是爲了這裏插入的父母必須在孩子之前先發生。 – hpandalai 2014-09-30 21:40:09

+0

是的,因爲它們將是同步的,它們將按照定義的順序運行。 – 2014-09-30 21:50:40