単一リソーストランザクション

単一リソーストランザクション (単一トランザクションやローカルトランザクションとも呼ばれる) では、単一リソースのみを使用してメッセージを送信または受信します: JMS ブローカー、VM キュー、または JDBC 接続。

次の例は、JMS コネクタの接続元およびパブリッシュ操作を使用して実行される単一リソーストランザクションが含まれるフローを示しています。

<flow name="asdFlow" doc:id="2a67b1ee-0394-44a8-b6d9-9ce4f94f1ae2" >
	<jms:listener config-ref="JMS_Config" destination="test.in" transactionalAction="ALWAYS_BEGIN"/>
	<!-- Other operations -->
	<jms:publish config-ref="JMS_Config" destination="test.out" transactionalAction="ALWAYS_JOIN"/>
</flow>
jms:listener​ 提供元と jms:publish​ 操作の両方で同じ接続設定を使用する必要があります。これは、このメカニズムが 1 つのリソースを管理することを目的としているためです。

上記の例では、test.in​ キューからメッセージを受信する JMS メッセージ提供元とメッセージを test.out​ キューに送信する別の JMS 操作を定義しています。transactionalAction​ 属性によって、Mule がトランザクションを開始する方法が決まります。このフロー内で、Mule は受信したすべてのメッセージのトランザクションを開始 (jms:listener​ 提供元) し、送信するすべてのメッセージについて進行中のトランザクションを必ず結合します (jms:publish​ 操作)。

Mule は、完全なフローを通じて正常に渡されるメッセージのみをコミットします。フローのどこかの時点でメッセージがエラーをスローし、そのエラーが伝播される場合 (つまり、on-error-continue​ で処理されない)、Mule はトランザクションをロールバックします。エラーの処理方法についての詳細は、「On Error スコープ」​を参照してください。

ネストされたトランザクション

ネストされたトランザクションは、単一リソーストランザクションでは使用できません。詳細は、「XA トランザクション」​を参照してください。

Was this article helpful?

💙 Thanks for your feedback!