Configuring XA Transactions in JMS Connector | MuleSoft Documentation
# Configuring XA Transactions in JMS Connector
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.
## 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** :


```
 <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`:


```
</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 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