Integration Server JMS over AMQP with RabbitMQ using RabbitMQ Native JMS Client library
Tags: webmethods, integration, esb, iot
Published: 2022-01-13 12:48:55

---
title: Integration Server JMS over AMQP with RabbitMQ using RabbitMQ Native JMS Client library
published: true
date: 2022-01-13 05:21:11 UTC
tags: webmethods, integration, esb, iot
canonical_url: https://tech.forums.softwareag.com/t/integration-server-jms-over-amqp-with-rabbitmq-using-rabbitmq-native-jms-client-library/254439
---

### Overview

RabbitMQ also provides a native JMS client which could be used for JMS over AMQP with Integration Server  
[https://www.rabbitmq.com/jms-client.html](https://www.rabbitmq.com/jms-client.html)

Refer to the below article for RabbitMQ setup and configuration:

>[Integration Server support for AMQP with providers (Azure Service Bus and RabbitMQ)](https://tech.forums.softwareag.com/t/integration-server-support-for-amqp-with-providers-azure-service-bus-and-rabbitmq/254392)

As of today the native client support AMQP 0-9-1.

To validate the AMQP protocol version you could just open the RabbitMQ admin console and check the “Protocol” section from the “Connections” tab.

[![image](https://aws1.discourse-cdn.com/techcommunity/original/3X/9/5/95427a38f77ef63d3dce7d65e00f395dcb2f6ad8.png)](https://aws1.discourse-cdn.com/techcommunity/original/3X/9/5/95427a38f77ef63d3dce7d65e00f395dcb2f6ad8.png "image")

To validate the virtual host the connection points to open the RabbitMQ admin console and check the “Virtual host” section from the “Connections” tab.

We need to make sure that the RabbitMQ node is enabled with rabbitmq-jms-topic-exchange plugin.

> Note: If the JMS trigger in Integration Server fails with an exception “JMS Trigger <Trigger\_Name> failed preprocessing: java.lang.NumberFormatException: Null is not a valid int”, consider providing a JMS Message Priority while sending the JMS Message.

> Note: If “Message TTL” is configured on the RabbitMQ queue, the trigger in Integration Server will not receive the messages from that queue unless the queue in RabbitMQ is having a binding for the “amq.direct” exchange.

### JNDI binding
Define JNDI bindings [(click for more details)](https://tech.forums.softwareag.com/t/integration-server-jms-over-amqp-with-rabbitmq-using-rabbitmq-native-jms-client-library/254439/1)

> Note: When using virtual host, consider creating an exchange in that vhost and bind to the queue, in the above JNDI bindings, the exchange “testqueue1exchange” is created on democonnect and the queue testQueue1 has a binding to this exchange.

### Sample .bindings file content
.bindings [(click for more details)](https://tech.forums.softwareag.com/t/integration-server-jms-over-amqp-with-rabbitmq-using-rabbitmq-native-jms-client-library/254439/1)

> Note: Download the required RabbitMQ JMS client library and put the jars in Integration Server lib/jars directory

### Integration Server Settings > Messaging > JNDI Settings

**Predefined JNDI Templates** → file system

**Initial Context Factory** → com.sun.jndi.fscontext.RefFSContextFactory

**Provider URL** → Directory location of the .binding file

[![image](https://aws1.discourse-cdn.com/techcommunity/optimized/3X/0/f/0f149d0c464a38bfa0c984bcdac6b8a2ba7bbcb4_2_690x449.png)](https://aws1.discourse-cdn.com/techcommunity/original/3X/0/f/0f149d0c464a38bfa0c984bcdac6b8a2ba7bbcb4.png "image")

### Settings > Messaging > JMS Settings

With the native client of RabbitMQ, we can leave the “Create Temporary Queue” option as default to checked.

[![image](https://aws1.discourse-cdn.com/techcommunity/optimized/3X/8/8/889acc3d14be83b1dace1b42c37175358637dffd_2_479x500.png)](https://aws1.discourse-cdn.com/techcommunity/original/3X/8/8/889acc3d14be83b1dace1b42c37175358637dffd.png "image")

### Demo

Check out the demo in the [original article](https://tech.forums.softwareag.com/t/integration-server-jms-over-amqp-with-rabbitmq-using-rabbitmq-native-jms-client-library/254439) in the Software AG Tech Community!