0

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 で必要なものを取得する別の方法はありますか?

4

1 に答える 1