Mule 3.3.2 には次のフローがあります。
<flow name="testFlow" processingStrategy="synchronous">
<vm:inbound-endpoint
connector-ref="vmConnector"
path="in">
<vm:transaction action="ALWAYS_BEGIN"/>
</vm:inbound-endpoint>
<transactional action="ALWAYS_BEGIN">
<jdbc:outbound-endpoint
connector-ref="jdbcConnector"
queryKey="insertTest"
/>
<jdbc:outbound-endpoint
connector-ref="jdbcConnector"
queryKey="insertTest2"
/>
<rollback-exception-strategy/>
</transactional>
<vm:outbound-endpoint
connector-ref="vmConnector"
path="outErrorQueue">
<vm:transaction action="ALWAYS_JOIN"/>
</vm:outbound-endpoint>
</flow>
私が達成しようとしているのは、vm トランザクションにネストされた jdbc トランザクションです。トランザクション スコープ内の例外は、jdbc トランザクションのロールバックをトリガーし、トランザクション フローのスコープに伝播し、vm トランザクションのデフォルトの例外戦略をトリガーする必要があります。もちろん、トランザクションスコープ外の例外は、フローのデフォルトの例外戦略をトリガーするだけです。
eg のソースを読むとorg.mule.transaction.TransactionCoordination
、少なくともアクションとしてtransactional
受け入れACTION_NOT_SUPPORTED
られる場合は、それが機能する可能性があると信じるようになります (そうではありません-私はそれを作ることができますか?)。
私が代わりに得るのは
org.mule.transaction.IllegalTransactionStateException: A transaction is not available for this session, but transaction action is "Always Join"
at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:41)
at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:44)
at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:52)
vm:outbound-endpoint で。
Mule で必要なものを取得する別の方法はありますか?