RabbitMQ also provides a native JMS client which could be used for JMS over AMQP with Integration Server
Refer to the below article for RabbitMQ setup and configuration:
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.
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.
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.
.bindings (click for more details)
Note: Download the required RabbitMQ JMS client library and put the jars in Integration Server lib/jars directory
Predefined JNDI Templates → file system
Initial Context Factory → com.sun.jndi.fscontext.RefFSContextFactory
Provider URL → Directory location of the .binding file
With the native client of RabbitMQ, we can leave the “Create Temporary Queue” option as default to checked.
Check out the demo in the original article in the Software AG Tech Community!