---
schema_version: "1"
id: a29ebb9044b1a18f654254edf617911be69fa139a7275044bfbcdb7f62653f41
title: Configuring XA Transactions in JMS Connector
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/jms-connector/1.10/jms-xa-transactions.md
canonical_url: https://docs.mulesoft.com/jms-connector/1.10/jms-xa-transactions
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c82c397a4e0d6e1e97fe680f2e86ec31a8848147cab3134ac9fe757fc5e07de7
description: MuleSoft Documentation Site
release: "1.10"
latest: false
---
---
product: JMS Connector
version: 1.10
---

# Configuring XA Transactions in JMS Connector

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

Anypoint Connector for JMS (JMS Connector) provides the option to use Extended Architecture
Transactions (XA Transactions) when you configure the **XA Connection Pool** and the **Transaction
Type** fields.

## Before You Begin

Before getting started, ensure that you have an understanding of
[XA Transactions](https://docs.mulesoft.com/mule-runtime/latest/xa-transactions).

## Configure XA Transactions

To configure XA transactions, follow these steps:

1.  In your **JMS Config**, configure the **XA Connection Pool** fields for **Min pool size**, **Max
    pool size**, and **Max idle seconds**:

```xml
 <jms:config name="JMS_Config">
        <jms:active-mq-connection brokerURL="tcp://localhost:61616"
                                  userName="admin"
                                  password="admin">
            <jms:xa-connection-pool minPoolSize="1"
                                    maxPoolSize="10"
                                    maxIdleSeconds="45"/>
        </jms:active-mq-connection>
    </jms:config>
```

2.  Configure the **JMS Listener** source **XA Transaction** field to `XA`:

```xml
</flow>
    <flow name="JMS_Listener_Flow">
        <jms:listener
                destination="queue.in"
                config-ref="JMS_Config"
                transactionType="XA"
                transactionalAction="ALWAYS_BEGIN">
            <ee:transform>
                <ee:message>
                    <ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
                </ee:message>
            </ee:transform>
        </jms:listener>
        <vm:publish config-ref="VM_Config"
                    queueName="queue"
                    transactionType="XA"
                    transactionalAction="ALWAYS_JOIN"/>
    </flow>
```

In the **Configuration XML** editor window, the Mule app configuration looks like this:

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:http="http://www.mulesoft.org/schema/mule/http"
      xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
      xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
      xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
    <vm:config name="VM_Config">
        <vm:queues>
            <vm:queue queueName="queue"/>
        </vm:queues>
    </vm:config>

    <jms:config name="JMS_Config">
        <jms:active-mq-connection brokerURL="tcp://localhost:61616"
                                  userName="admin"
                                  password="admin">
            <jms:xa-connection-pool minPoolSize="1"
                                    maxPoolSize="10"
                                    maxIdleSeconds="45"/>
        </jms:active-mq-connection>
    </jms:config>

    <http:listener-config name="HTTP_Listener_config">
        <http:listener-connection host="0.0.0.0" port="8081"/>
    </http:listener-config>

    <flow name="JMS_Publish">
        <http:listener config-ref="HTTP_Listener_config"
                       path="/publish"/>
        <jms:publish transactionalAction="ALWAYS_JOIN"
                     destination="queue"/>
    </flow>
    <flow name="JMS_Listener_Flow">
        <jms:listener
                destination="queue.in"
                config-ref="JMS_Config"
                transactionType="XA"
                transactionalAction="ALWAYS_BEGIN">
            <ee:transform>
                <ee:message>
                    <ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
                </ee:message>
            </ee:transform>
        </jms:listener>
        <vm:publish config-ref="VM_Config"
                    queueName="queue"
                    transactionType="XA"
                    transactionalAction="ALWAYS_JOIN"/>
    </flow>

    <flow name="VM_Listener_Flow">
        <vm:listener config-ref="VM_Config"
                     transactionalAction="NONE"
                     transactionType="XA"
                     queueName="queue">
        </vm:listener>
        <logger level="INFO"
                message="Message Received from VM Queue: #[payload]"/>
    </flow>
</mule>
```

## See Also

[JMS Connector Examples](https://docs.mulesoft.com/jms-connector/1.10/jms-examples)
