DEV Community

Tech Community for Software AG Tech Community

Posted on • Originally published at tech.forums.softwareag.com on

Integration Server JMS over AMQP with RabbitMQ using RabbitMQ Native JMS Client library

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

Refer to the below article for RabbitMQ setup and configuration:

Integration Server support for AMQP with providers (Azure Service Bus and RabbitMQ)

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

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 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)

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)

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

Settings > Messaging > JMS Settings

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

image

Demo

Check out the demo in the original article in the Software AG Tech Community!

Discussion (0)