Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.
webMethods Integration Server supports JMS over AMQP by using Apache QPID client libraries. We can connect with 0.x and 1.0 protocol with the limitations of unsupported features (based on providers)
* MessageSelectors are not supported. * Temporary destinations are not supported. * Transacted/distributed transactions are not supported. * Volatile topic subscriptions not supported * One to many session -> consumer not supported
and there might be many based on the provider.
Warning: While creating a JMS connection alias in Integration Server, consider unchecking the “Create Temporary Queue” option as JMS over AMQP doesn’t support temporary destinations. Without this the connection might get into a hung state and will always show as “In Progress”.
Recommendations: Frequent polling sometimes introduces issues with Azure Service Bus sessions, and those bad sessions will have a side effect on both client and server as the consumers will continuously trying to reconnect, so consider increasing the primary and secondary thread polling intervals in Integration Server.
Tune the following AMQP properties correctly as per the need jms.prefetchPolicy amqp.idleTimeout
Having a short idle timeout will have frequent connection refresh, so I would recommend to change the default idle timeout.
The documentation says it officially supports 0.x protocol version and uses the 0.x version JNDI content factory class as a default value for the JNDI template for QPID AMQP 0.x, whereas the upcoming release will also add the support for 1.0 protocol
Initial Context Factory → org.apache.qpid.jndi.PropertiesFileInitialContextFactory
Initial Context Factory → org.apache.qpid.jms.jndi.JmsInitialContextFactory
#connectionfactory.[jndiname] = [ConnectionURL] connectionfactory.myCF = amqp://[username]:[password]@/?maxprefetch='1000'&brokerlist='tcp://host:port' #destination.[jndiname] = [address_string] #for Queue queue.testQueue1=testQueue1 #for Topic topic.testTopic1=testTopic1
#connectionfactory.[jndiname] = [ConnectionURL] connectionfactory.cf=amqp(s)://[serverurl]?jms.username=[username]&jms.password=[password]&amqp.idleTimeout=[timeout]&jms.prefetchPolicy.all=0&amqp.traceFrames=true&jms.clientID=[client_ID] #destination.[jndiname] = [address_string] #for Queue queue.q1 = q1 #for Topic topic.t1 = t1
RabbitMQ supports AMQP 1.0 via a plugin.
Install RabbitMQ along with erlang
After the installation go to sbin folder of the installation
for example: C:\Program Files\RabbitMQ Server\rabbitmq_server-3.9.10\sbin>
Use command rabbitmqctl.bat status to know the details of the PID, listener port, plugins installed etc…
As the web interface of RabbitMQ is disabled by default, to enable it we need to install the following plugin (rabbitmq_management)
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.9.10\sbin>rabbitmq-plugins.bat enable rabbitmq_management
Now you can again run the rabbitmqctl.bat status command and check the actual http port for the admin UI Interface: [::], port: 15672, protocol: http, purpose: HTTP API
Use the host:port http://localhost:15672/ to open the Admin UI with the default username/password as ( guest/guest )
As we are interested in JMS, Enabling the Topic Selector Plug-in is also required
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.9.10\sbin>rabbitmq-plugins enable rabbitmq_jms_topic_exchange
As AMQP 1.0 is supported through a plugin in RabbitMQ, let’s enable that as well
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.9.10\sbin>rabbitmq-plugins enable rabbitmq_amqp1_0
Assuming that you have access to Azure landing zone, here is what next for getting started
You must URL-encode the password manually
Download the respective QPID JMS client libraries based on the AMQP version and put the jars into Integration Server lib\jars directory
Hi Srikanth,
In the connection string, jms.username and jms.password is used to provide the credentials. Usually we use RootManageSharedAccessKey as the default user while testing and the password as shown from the Service BUS UI page.
Thanks
Hi @Prasanta_Malik - Thanks for the KB article. What should be the username and password for Azure Service Bus? I do have connection string. How can this be passed as username and password? Can you please help?