IBMMQ 带用户密码验证的发送和接收消息

来源:互联网 发布:如何注销淘宝账号 编辑:程序博客网 时间:2024/06/05 06:23

由于项目需要,需要和一个比较旧的系统进行交互,为了不修改旧系统逻辑,交互方式采用IBMMQ。但是网上IBMMQ文档少之又少。不过最终还是成功完成对接。特记录下来。

项目是把IBMMQ和spring jms进行集成。 需要的jar包我就不列了,程序报什么错去引入什么包吧。 

1  spring配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <description>MQ</description>    <!-- mq队列连接工厂 -->    <bean id="jmsConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">        <property name="transportType" value="1"/>        <property name="hostName" value="${ibmmq.hostName}"/>        <property name="port" value="${ibmmq.port}"/>        <property name="CCSID" value="${ibmmq.ccsid}"/>        <property name="queueManager" value="${ibmmq.queueManager}"/>        <property name="channel" value="${ibmmq.channel}"/>    </bean>    <bean id="mqConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">        <property name="username" value="${ibmmq.username}"/>        <property name="password" value="${ibmmq.password}"/>        <property name="targetConnectionFactory" ref="jmsConnectionFactory"/>    </bean><!--    <!– spring缓存管理mq队列连接工厂 –>    <bean id="jmsQueueConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">        <property name="targetConnectionFactory" ref="jmsConnectionFactory" /> <!–       <property name="sessionCacheSize">            <value>15</value>        </property>–>    </bean>-->    <!-- MQ sender queue setup -->    <bean id="senderQueue" class="com.ibm.mq.jms.MQQueue">        <property name="baseQueueManagerName" value="${ibmmq.queueManager}"/>        <property name="baseQueueName" value="${ibmmq.send.queue}"/>    </bean>    <!-- MQ receiver queue setup -->    <bean id="receiverQueue" class="com.ibm.mq.jms.MQQueue">        <property name="baseQueueManagerName" value="${ibmmq.queueManager}"/>        <property name="baseQueueName" value="${ibmmq.receive.queue}"/>    </bean>    <!-- the JMSTemplate setup for Sender Queue-->    <bean id="SenderJMSTemplate" class="org.springframework.jms.core.JmsTemplate">        <property name="connectionFactory" ref="mqConnectionFactory"/>        <property name="defaultDestination" ref="senderQueue"/>        <property name="pubSubDomain" value="false"/>    </bean>    <!-- the JMSTemplate setup for Receiver Queue -->    <bean id="ReceiverJMSTemplate" class="org.springframework.jms.core.JmsTemplate">        <property name="connectionFactory" ref="mqConnectionFactory"/>        <property name="defaultDestination" ref="receiverQueue"/>        <property name="pubSubDomain" value="false"/>    </bean>    <!-- 队列发送程序 -->    <bean id="jmsSender" class="com.gome.status.order.mqservice.gstore.SAPIBMMQSender">        <property name="jmsTemplate" ref="SenderJMSTemplate" />        <property name="replyTo" ref="senderQueue" />    </bean>    <!-- 队列接收程序 -->    <bean id="jmsReceiver" class="com.gome.status.order.mqservice.gstore.SAPIBMMQReceiver">        <property name="jmsTemplate" ref="ReceiverJMSTemplate"/>        <property name="receiveQueue" ref="receiverQueue"/>    </bean>    <!-- spring 监听队列,一旦队列中有消息,马上触发监听 -->    <bean id="jmsContainer"          class="org.springframework.jms.listener.DefaultMessageListenerContainer">        <property name="connectionFactory" ref="mqConnectionFactory" />        <property name="destination" ref="receiverQueue" />        <property name="messageListener" ref="jmsReceiver" />        <property name="concurrentConsumers" value="6" />    </bean></beans>
2 发送消息端

public class SAPIBMMQSender {private ShortLogUtil logger = new ShortLogUtil(this.getClass().getName());private JmsTemplate jmsTemplate;private Destination replyTo;public JmsTemplate getJmsTemplate() {return jmsTemplate;}public void setJmsTemplate(JmsTemplate jmsTemplate) {this.jmsTemplate = jmsTemplate;}public Destination getReplyTo() {return replyTo;}public void setReplyTo(Destination replyTo) {this.replyTo = replyTo;}public void sendMessage(String data) throws Exception {jmsTemplate.convertAndSend(replyTo,data);logger.logInfo("发送SAPmq消息成功!","sendMessage",null);}}
3 接收消息端
public class SAPIBMMQReceiver implements MessageListener {private JmsTemplate jmsTemplate;private MQQueue receiveQueue;public JmsTemplate getJmsTemplate() {return jmsTemplate;}public void setJmsTemplate(JmsTemplate jmsTemplate) {this.jmsTemplate = jmsTemplate;}public MQQueue getReceiveQueue() {return receiveQueue;}public void setReceiveQueue(MQQueue receiveQueue) {this.receiveQueue = receiveQueue;}@Overridepublic void onMessage(Message message) {}}



原创粉丝点击