How do I integrate the servicemix-jms component with WebsphereMQ?
Connecting to external JMS providers is a common request. It requires a JMS connection factory from the JMS vendor. Below is an example of the configuration to be used in the xbean.xml
file for the servicemix-jms binding component SU to consume messages from IBM WebsphereMQ/MQSeries:
Code Block | ||||
---|---|---|---|---|
| ||||
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0" xmlns:foo="http://mycompany.com/foo" xmlns:util="http://www.springframework.org/schema/util"> <jms:endpoint service="foo:MyMQService" endpoint="mq" targetService="foo:TARGET_SERVICE_NAME_GOES_HERE" targetEndpoint="TARGET_ENDPOINT_GOES_HERE" role="consumer" destinationStyle="queue" jmsProviderDestinationName="QUEUE_NAME_GOES_HERE" connectionFactory="#mqConnectionFactory" defaultMep="http://www.w3.org/2004/08/wsdl/in-only" /> <bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="transportType"> <util:constant static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP" /> </property> <property name="queueManager" value="QMGR_NAME_GOES_HERE" /> <property name="hostName" value="HOST_ADDRESS_GOES_HERE" /> <property name="channel" value="QMGR_CHANNEL_NAME_GOES_HERE" /> <property name="port" value="PORT_NUMBER_GOES_HERE" /> </bean> </beans> |
The key to this configuration is the connection factory provided by IBM named com.ibm.mq.jms.MQQueueConnectionFactory
. This class must be acquired from IBM as it is not provided with ServiceMix or ActiveMQ.