用Websphere MQ自带的工具包通过与Spring整合向Websphere MQ发消息,并通过listener接收消息的例子
首先第一步就是配置一个websphere MQ,这个就不多说了,不会的就去找技术文章看看
然后是spring的配置文件:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//Spring//DTD Bean//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Application Context -->
<beans>
<bean id="jmsConnectionFactory"
class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType">
<value>1</value><!-- com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP -->
</property>
<property name="queueManager">
<value>***</value>
</property>
<property name="hostName">
<value>***</value>
</property>
<property name="port">
<value>1414</value>
</property>
<property name="channel">
<value>***</value>
</property>
</bean>
<!-- MQ sender queue setup -->
<bean id="senderQueue" class="com.ibm.mq.jms.MQQueue">
<constructor-arg value="TEST" />
<property name="baseQueueManagerName">
<value>***</value>
</property>
<property name="baseQueueName">
<value>***</value>
</property>
</bean>
<!-- MQ receiver queue setup -->
<bean id="receiverQueue" class="com.ibm.mq.jms.MQQueue">
<constructor-arg value="TESTGUI" />
<property name="baseQueueManagerName">
<value>***</value>
</property>
<property name="baseQueueName">
<value>***</value>
</property>
</bean>
<!-- the JMSTemplate102 setup for Sender Queue-->
<bean id="SenderJMSTemplate"
class="org.springframework.jms.core.JmsTemplate102 ">
<property name="connectionFactory">
<ref bean="jmsConnectionFactory" />
</property>
<property name="pubSubDomain">
<value>false</value>
</property>
<property name="defaultDestination">
<ref bean="senderQueue" />
</property>
</bean>
<!-- the JMSTemplate102 setup for Receiver Queue -->
<bean id="ReceiverJMSTemplate"
class="org.springframework.jms.core.JmsTemplate102 ">
<property name="connectionFactory">
<ref bean="jmsConnectionFactory" />
</property>
<property name="pubSubDomain">
<value>false</value>
</property>
<property name="defaultDestination">
<ref bean="receiverQueue" />
</property>
</bean>
<bean id="jmsSender" class="springexample.client.JMSSender">
<property name="jmsTemplate102" ref="SenderJMSTemplate" />
<property name="replyTo" ref="senderQueue" />
<property name="msgheader">
<props>
<prop key="EVENTNAME">****</prop>
<prop key="WIRECENTER">***</prop>
<prop key="DESTINATION">***</prop>
<prop key="embusMessagingMode">***</prop>
<prop key="CLIENTID">***</prop>
<prop key="USERID">***</prop>
<prop key="GROUPID">***</prop>
<prop key="embusApplicationID">***</prop>
<prop key="embusLoggingKey">***</prop>
<prop key="USERID">***</prop>
<!-- below is for message selector -->
<prop key="messageSelector">***</prop>
</props>
</property>
</bean>
<bean id="jmsReceiver" class="springexample.client.JMSReceiver">
<property name="jmsTemplate102">
<ref bean="ReceiverJMSTemplate" />
</property>
<property name="receiveQueue">
<ref bean="receiverQueue" />
</property>
</bean>
<bean
class="org.springframework.jms.listener.DefaultMessageListenerContainer102">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="receiverQueue" />
<property name="messageListener" ref="jmsReceiver" />
<property name="concurrentConsumers" value="1" />
<property name="messageSelector" value="messageSelector = '***'" />
</bean>
</beans>
然后是发消息的JMSSender.java
/*
* Created on Feb 3, 2012
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author xiaozurun
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
package springexample.client;
import java.util.Iterator;
import java.util.Properties;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.jms.core.JmsTemplate102;
import org.springframework.jms.core.MessageCreator;
public class JMSSender {
private JmsTemplate102 jmsTemplate102;
private Properties msgheader;
private Destination replyTo;
public JmsTemplate102 getJmsTemplate102() {
return jmsTemplate102;
}
public void setJmsTemplate102(JmsTemplate102 jmsTemplate102) {
this.jmsTemplate102 = jmsTemplate102;
}
/**
* @return Returns the msgheader.
*/
public Properties getMsgheader() {
return msgheader;
}
/**
* @param msgheader The msgheader to set.
*/
public void setMsgheader(Properties msgheader) {
this.msgheader = msgheader;
}
/**
* @return Returns the replyTo.
*/
public Destination getReplyTo() {
return replyTo;
}
/**
* @param replyTo The replyTo to set.
*/
public void setReplyTo(Destination replyTo) {
this.replyTo = replyTo;
}
public void sendMesage() {
//System.out.println(sendQueue.getBaseQueueName());
jmsTemplate102.send(replyTo, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
String strInput = "";
try {
strInput = util.getString("facs.xml");
System.out.println("send message: " + strInput);
} catch (Exception e) {
}
Message message = session.createTextMessage(strInput);
Iterator it = msgheader.keySet().iterator();
System.out.println("Print message header property:");
while (it.hasNext()) {
String key = (String) it.next();
message.setStringProperty(key, msgheader.getProperty(key));
System.out.print("(" + key + " : "+ msgheader.getProperty(key) + ")\t");
}
message.setStringProperty("TAFIFlag", "1234567890");
message.setJMSReplyTo(replyTo);
return message;
}
});
}
}
未完。。。
接着上面写,message sender写完了,现在剩下收消息了。应为我们在spring里配置了是通过listener来监听这个queue的,所以当消息来了,listener就会激活receive里的onmessage方法来收消息。下面是code;
JMSReceiver.java 实现了MessageListener
package springexample.client;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.jms.core.JmsTemplate102;
import com.ibm.mq.jms.MQQueue;
public class JMSReceiver implements MessageListener {
private JmsTemplate102 jmsTemplate102;
private MQQueue receiveQueue;
/**
* @return Returns the jmsTemplate102.
*/
public JmsTemplate102 getJmsTemplate102() {
return jmsTemplate102;
}
/**
* @param jmsTemplate102 The jmsTemplate102 to set.
*/
public void setJmsTemplate102(JmsTemplate102 jmsTemplate102) {
this.jmsTemplate102 = jmsTemplate102;
}
/**
* @return Returns the receiveQueue.
*/
public MQQueue getReceiveQueue() {
return receiveQueue;
}
/**
* @param receiveQueue The receiveQueue to set.
*/
public void setReceiveQueue(MQQueue receiveQueue) {
this.receiveQueue = receiveQueue;
}
public void onMessage(Message message) {
try {
System.out.println("reviced msg is:" +(new java.util.Date())+":"+ ((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
public void processMessage(){
System.out.println("Start to receive message");
Message msg = jmsTemplate102.receive(receiveQueue.getBaseQueueName());
try{
TextMessage textMessage = (TextMessage) msg;
if( msg!=null){
System.out.println(" Message Received -->" + textMessage.getText());
} else {
System.out.println(" there is no message in the Queue :" + receiveQueue.getBaseQueueName());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
ok,以上就是整个的收发了。
分享到:
相关推荐
一个C#实现IBM WebSphere MQ 消息收发的实例,包含 发送接收等. 使用的时候只需要修改 appconfig 文件的内容即可. 如有问题.请留言
JMS 客户端模式实现服务端、客户端;实现同步以及异步的收发处理;
C#操作IBM Websphere MQ收发消息,详细配置操作http://www.cnblogs.com/xlxr45/p/7904991.html
JAVA IBM MQ 接收消息、发送消息例子
C#实现IBM WebSphere MQ 消息收发例子 参考文章: https://www.codeproject.com/Articles/12198/IBM-WebSphere-MQ-with-C-GUI-application-that-is-bo ...
IBM MQ将消息发送至远程队列,文档详细,有截图,有命令
一个C#实现IBM WebSphere MQ 消息收发的实例,自己平时写的,如遇困难,请留言
A IBM MQ client is part of the product that can be installed on its own, on a separate machine from the base product and server. You can run an IBM MQ application on an IBM MQ client and it can ...
描述MQ消息持久化,在队列管理器发生异常时,传送到队列中的信息怎样通过日志将信息恢复到队列中。
通过IBM websphere MQ自带的工具包向远程的Websphere MQ收发消息的代码(包括MQ的lib包都有) 亲测,可用
下载后解压即可使用,专门测试远程和本地IBMMQ数据,可以导入导出数据
jmeter插件,用于进行IBM MQ测试。 部署插件之后,可进行简单配置,即可发送消息到mq通道中 使用方法参见 https://testerhome.com/notes/2193
目的:通过JMS 实现 IBM MQ的请求应答功能 工作原理:消息生产者发送消息到队列IN1,然后可以异步或者同步等待消费者接收到IN1消息后,生成应答消息,并发布到IN2队列中。生产者通过messageid在IN2队列中进行消息...
Java连接IBM WebSphere MQ 7处理队列信息所需jar包,从安装目录直接打的包。主要包括: /com.ibm.mq.commonservices.jar /com.ibm.mq.defaultconfig.jar /com.ibm.mq.fta.jar /com.ibm.mq.headers.jar /...
一个简单的IBM MQ操作例子,put方法和get方法
IBM WebSphere MQ 支持两种不同的应用程序编程接口:Java 消息服务(JMS)和消息队列接口(MQI)。在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。应用程序直接与其本地队列管理器通过使用 MQI 进行对话...
ibmmq所需jar包,用于ibmmq连接建立,消息发送与接收,导入这些jar就能完成ibmmq相关功能。
JAVA连接IBM MQ,具体的详细说明,请再csdn上面搜索JAVA连接IBM MQ关键词
IBMMQ消息队列源码
利用IBMMQ实现远程消息安全传递 利用IBMMQ实现远程消息安全传递