1
votes

I have a spring jms application that currently using ibm mq server for the queue managment. We are planning to change the middleware to rabbitmq for better performance and to control it effectively but want to keep the spring jms code as it is. I followed all the steps mentioned in the following link. https://www.rabbitmq.com/jms-client.html

Currently in my tomcat context.xml, the queue configuration is like below

<Resource
            name="jms/MYQUEUE"
            auth="Container"
            type="com.ibm.mq.jms.MQQueue"
            factory="com.ibm.mq.jms.MQQueueFactory"
            description="JMS Queue for receiving messages from Dialog"
            QU="MYQUEUE"/>

For the rabbitmq jms, i am changing it to

<Resource
        name="jms/MYQUEUE"
        auth="Container"
        type="javax.jms.Queue"
        factory="com.rabbitmq.jms.admin.RMQObjectFactory"
        description="JMS Queue for receiving messages from Dialog"
        destinationName="MYQUEUE"
        amqp="true" />

I have added all the neccessary jars in the project lib. But everytime i start tomcat, i get javax.naming.NameNotFoundException: Name JMS is not bound in this context. I do not get any error for the connection factory though.

 <Resource
      name="jms/queueCF"
      auth="Container"
      type="javax.jms.ConnectionFactory"
      factory="com.rabbitmq.jms.admin.RMQObjectFactory"
      description="JMS Queue Connection Factory for sending messages"
      HOST="localhost"
      PORT="5672"
      username="guest"
      password="guest"
      />

Is there any configuration missing or is this a class loading issue?

1

1 Answers

0
votes

Tomcat should have RabbitMQ libraries.

You can read this Github repo and then put it into %CATALINA_HOME%\lib\.