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!

Hot sauce if you're wrong - web dev trivia for staff engineers

Hot sauce if you're wrong · web dev trivia for staff engineers (Chris vs Jeremy, Leet Heat S1.E4)

  • Shipping Fast: Test your knowledge of deployment strategies and techniques
  • Authentication: Prove you know your OAuth from your JWT
  • CSS: Demonstrate your styling expertise under pressure
  • Acronyms: Decode the alphabet soup of web development
  • Accessibility: Show your commitment to building for everyone

Contestants must answer rapid-fire questions across the full stack of modern web development. Get it right, earn points. Get it wrong? The spice level goes up!

Watch Video 🌶️🔥

Top comments (0)

Dev Diairies image

User Feedback & The Pivot That Saved The Project

🔥 Check out Episode 3 of Dev Diairies, following a successful Hackathon project turned startup.

Watch full video 🎥

👋 Kindness is contagious

Sign in to DEV to enjoy its full potential—unlock a customized interface with dark mode, personal reading preferences, and more.

Okay