2014-04-10 43 views
0

我兩個JDBC在騾3.2.0流動,一個使用MySQL數據庫,並使用SQL Server數據庫等具有。麻煩使用騾JDBC兩個不同的數據庫流動

<mule ... 
    <spring:bean id="MySQL-jdbcDataSource" 
     class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown"> 
     <spring:property name="driverName" 
      value="com.mysql.jdbc.Driver" /> 
     <spring:property name="url" 
      value="jdbc:mysql://host:port/schema" /> 
    </spring:bean> 

    <jdbc:connector name="MySQL-jdbcConnector" 
     dataSource-ref="MySQL-jdbcDataSource" pollingFrequency="${MySQL.db.poll}" 
     transactionPerMessage="false"> 
     <jdbc:query key="read" value="${MySQL.db.jdbc_query}" /> 
    </jdbc:connector> 

    <flow name="MySQL-flow"> 

     <jdbc:inbound-endpoint queryKey="read" 
      connector-ref="MySQL-jdbcConnector"> 
      <jdbc:transaction action="ALWAYS_BEGIN"/> 
      <property key="receiveMessageInTransaction" value="true"/> 
     </jdbc:inbound-endpoint> 

     <vm:outbound-endpoint path="path" connector-ref="first-level"> 
      <message-properties-transformer scope="outbound"> 
       <add-message-property key="identifier" value="MySQL"/> 
      </message-properties-transformer> 
      <vm:transaction action="NONE"/> 
     </vm:outbound-endpoint> 
    </flow> 
</mule> 

而且

<mule ... 
    <spring:bean id="SQLServer-jdbcDataSource" 
     class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown"> 
     <spring:property name="driverName" 
      value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
     <spring:property name="url" 
      value="jdbc:sqlserver://host:port;databaseName=schema" /> 
    </spring:bean> 

    <jdbc:connector name="SQLServer-jdbcConnector" 
     dataSource-ref="SQLServer-jdbcDataSource" pollingFrequency="${SQLServer.db.poll}" 
    transactionPerMessage="false"> 
     <jdbc:query key="read" value="${SQLServer.db.jdbc_query}" /> 
    </jdbc:connector> 

    <flow name="SQLServer-flow"> 
     <jdbc:inbound-endpoint queryKey="read" 
     connector-ref="SQLServer-jdbcConnector"> 
      <jdbc:transaction action="ALWAYS_BEGIN"/> 
      <property key="receiveMessageInTransaction" value="true"/> 
     </jdbc:inbound-endpoint> 

     <vm:outbound-endpoint path="${sv.vm.queue.name}" connector-ref="first-level-xform"> 
      <message-properties-transformer scope="outbound"> 
       <add-message-property key="${sv.vm.msg.identifier}" value="SQLServer"/> 
      </message-properties-transformer> 
      <vm:transaction action="NONE"/> 
     </vm:outbound-endpoint> 
    </flow> 
</mule> 

當我部署mule-deploy.properties這些絮狀物中的任何一個,它運行正常。但是,當我同時部署這兩個流時,它們都不起作用。我沒有得到任何錯誤或異常,但似乎沒有任何這些流程運行。

任何想法可能是錯誤的?可能與JDBC事務有關?

回答

0

,如果你有相同的應用2個不同的流程..然後刪除: -

<spring:bean id="SQLServer-jdbcDataSource" 
     class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown"> 
     <spring:property name="driverName" 
      value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
     <spring:property name="url" 
      value="jdbc:sqlserver://host:port;databaseName=schema" /> 
    </spring:bean> 

    <jdbc:connector name="SQLServer-jdbcConnector" 
     dataSource-ref="SQLServer-jdbcDataSource" pollingFrequency="${SQLServer.db.poll}" 
    transactionPerMessage="false"> 
     <jdbc:query key="read" value="${SQLServer.db.jdbc_query}" /> 
    </jdbc:connector> 
從任何流...的

因爲它被聲明爲全局......它可以從任何的使用在應用程序中的流程..我的意思是..只是從一個流程中刪除上面的代碼行...因爲你已經在流程中聲明瞭,我猜它是重複的,並不需要放在每一個流量...是的,只是提到參考connector-ref =「SQLServer-jdbcConnector」在騾流中......例如: -

<jdbc:inbound-endpoint queryKey="read" 
     connector-ref="SQLServer-jdbcConnector"> 
+0

還有一兩件事我注意到...你寫的<春天:屬性名=「URL」值=「的jdbc:mysql的://主機:端口/模式」 />其中,在其他流量,你所提到的數據庫名稱模式<春天:屬性名=「URL」值=「的jdbc:SQLSERVER://主機:端口;的databaseName =架構」 /> ...你錯過了「的databaseName =」第一流 –

+0

我之所以有兩個數據源引用是因爲我需要使用兩個不同的數據庫,並且它們不是重複的。另外,我沒有錯過第一個流中的「databaseName」,這只是MySQL和SQLServer的連接字符串之間的區別。 –