Single Resource Transactions
Single Resource Transactions (also known as a simple transaction or local transaction) only use a single resource to send or receive messages: JMS broker, VM queues, or JDBC connections.
The example below illustrates a flow which includes a single resource transaction performed using the source and publish operations of the JMS connector.
<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>
The example shown above defines a JMS message source that receives messages from a
test.in queue and another JMS operation that sends messages to a
test.out queue. The
transactionalAction attribute dictates how Mule initiates a transaction. Within this flow, Mule starts a new transaction for every message it receives (
jms:listener source), and always joins the transaction in progress for every message it sends (
Mule only commits messages that successfully pass through the complete flow. If at any point in the flow a message throws an error which is propagated (i.e. it is not handled by an
on-error-continue), Mule rolls back the transaction. Refer to On Error Scope for details on how to handle errors.
Nested transactions are not available for Single Resource transactions. Refer to XA Transactions for more details.