I am working on a Spring application where we have implemented code to send messages through IBM MQ.
Now we have been advised not to directly use MQ APIs directly and instead use JMS.
The steps I followed :
created a JNDI name to connect to the Message queue configured as:
<bean id="emailQueueDestination" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> <property name="jndiName" value="<<JNDI name of Queue" >>/> </bean>
I need a connecton factory object to connect to the JMS Provider and I have configured it as:
<bean id="emailQueueConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="queueManager" value="" /> <property name="hostName" value="" /> <property name="channel" value="" /> <property name="port" value="1414" /> </bean>
Further I have injected the above 2 beans in JMSTemplate class:
<bean id="emailQueueTemplate" class="org.springframework.jms.core.JmsTemplate" lazy-init="true">
<property name="connectionFactory" ref="emailQueueConnectionFactory" />
<property name="defaultDestination" ref="emailQueueDestination" />
</bean>
Now since my purpose is to remove dependency on MQ APIs, do you think the configuration above (especially for connection factory) looks good?