WebSphere MQ安装配置,队列管理器,队列,通道配置请见:
http://blog.youkuaiyun.com/adam_wzs/article/details/52381599
package com.wangzs.mq;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import util.WSMqConfigure;
import com.ibm.mq.jms.MQQueueConnectionFactory;
/**
* @Title IBM WebSphere MQ 发送消息
* @Description
* @author wangzs
* @date 2016-9-1
*/
public class WSMQSender {
private static Logger logger = Logger.getLogger(WSMQSender.class);
private static MQQueueConnectionFactory mcf;
private static QueueConnection qconn;
private static QueueSession session;
private static Queue queue;
private static QueueSender sender;
/**
* 初始化
*/
static {
try {
mcf = new MQQueueConnectionFactory();
mcf.setHostName(WSMqConfigure.getStringWSMqProp("hostname"));// MQ服务器的IP地址
mcf.setPort(WSMqConfigure.getInWSMqtProp("port"));// MQ端口
mcf.setQueueManager(WSMqConfigure.getStringWSMqProp("queuemanager_name"));// MQ的队列管理器名称;
mcf.setChannel(WSMqConfigure.getStringWSMqProp("channel"));// // MQ通道名字
qconn = mcf.createQueueConnection();
qconn.start();
session = qconn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = session.createQueue(WSMqConfigure.getStringWSMqProp("queue_name_recv"));// MQ远程队列的名称
sender = session.createSender(queue);
logger.info("WSMQSender initialize success.");
} catch (JMSException e) {
e.printStackTrace();
logger.info("WSMQSender initialize fail." + e.getStackTrace());
}
}
/**
* 发消息
*
* @param msgInfo
*/
public void sendMessage(String msgInfo) {
try {
TextMessage msg = session.createTextMessage();
msg.setText(msgInfo);
sender.send(msg);
logger.info("send message:" + msgInfo);
} catch (JMSException e) {
e.printStackTrace();
logger.info("send message error." + e.getStackTrace());
}
}
/**
* 停止
*/
public void stop() {
try {
sender.close();
session.close();
qconn.stop();
qconn.close();
logger.info("WSMQSender stop success.");
} catch (JMSException e) {
e.printStackTrace();
logger.info("WSMQSender stop error." + e.getStackTrace());
}
}
}
package com.wangzs.mq;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import util.WSMqConfigure;
import com.ibm.mq.jms.MQQueueConnectionFactory;
/**
* IBM WebSphere MQ 接收消息
*
* @Title
* @Description
* @author wangzs
* @date 2016-9-1
*/
public class WSMQRecevicer implements MessageListener {
private static Logger logger = Logger.getLogger(WSMQRecevicer.class);
private static MQQueueConnectionFactory mcf;
private static QueueConnection qconn;
private static QueueSession session;
private static Queue queue;
private static QueueReceiver recevier;
boolean replyed = false;
/**
* 初始化
*/
static {
try {
mcf = new MQQueueConnectionFactory();
mcf.setHostName(WSMqConfigure.getStringWSMqProp("hostname"));// MQ服务器的IP地址
mcf.setPort(WSMqConfigure.getInWSMqtProp("port"));// MQ端口
mcf.setQueueManager(WSMqConfigure.getStringWSMqProp("queuemanager_name"));// MQ的队列管理器名称;
mcf.setChannel(WSMqConfigure.getStringWSMqProp("channel"));// MQ通道名字
qconn = mcf.createQueueConnection();
qconn.start();
session = qconn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = session.createQueue(WSMqConfigure.getStringWSMqProp("queue_name_recv"));// MQ远程队列的名称
recevier = session.createReceiver(queue);
logger.info("WSMQRecevicer initialize success.");
} catch (JMSException e) {
e.printStackTrace();
logger.info("WSMQRecevicer initialize fail." + e.getStackTrace());
}
}
/**
* 停止
*/
public void stop() {
try {
recevier.close();
session.close();
qconn.stop();
qconn.close();
logger.info("WSMQRecevicer stop success.");
} catch (JMSException e) {
e.printStackTrace();
logger.info("WSMQRecevicer stop error." + e.getStackTrace());
}
}
/**
* 接收消息
*/
public void recevicerMessage() {
try {
session = qconn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
recevier = session.createReceiver(queue);
recevier.setMessageListener(this);
while (!replyed) {
Thread.sleep(1000);
}
} catch (JMSException e) {
e.printStackTrace();
logger.info("recevicer message error." + e.getStackTrace());
} catch (InterruptedException e) {
e.printStackTrace();
logger.info("recevicer message error." + e.getStackTrace());
}
}
public void onMessage(Message message) {
try {
String textMessage = ((TextMessage) message).getText();
logger.info("recevicer message:" + textMessage);
} catch (JMSException e) {
e.printStackTrace();
logger.info("recevicer listener message error:" + e.getStackTrace());
} finally {
replyed = true;
}
}
}
package util;
import java.io.InputStream;
import java.util.Properties;
import org.apache.log4j.Logger;
/**
* @Title 解析wsmq.properties
* @Description
* @author wangzs
* @date 2016-9-1
*/
public class WSMqConfigure {
private static Logger logger = Logger.getLogger(WSMqConfigure.class);
private static Properties properties;
private static String prefix = "com.ceair.wsmq.";
static {
properties = new Properties();
InputStream in = WSMqConfigure.class.getClassLoader().getResourceAsStream("wsmq.properties");
try {
properties.load(in);
} catch (Exception e) {
e.printStackTrace();
logger.error("load wsmq.properties error:" + e.getStackTrace());
}
}
/**
* 得到string类型参数值
*
* @param propName
* @return
*/
public static String getStringWSMqProp(String propName) {
return properties.getProperty(prefix + propName);
}
/**
* 得到int类型参数值
*
* @param propName
* @return
*/
public static int getInWSMqtProp(String propName) {
return Integer.parseInt(properties.getProperty(prefix + propName));
}
public static void main(String[] args) {
System.err.println(WSMqConfigure.getStringWSMqProp("queuemanager_name"));
System.err.println(WSMqConfigure.getInWSMqtProp("port"));
}
}
wsmq.properties
#ibm websphere mq config
#local config
com.ceair.wsmq.hostname = 127.0.0.1
com.ceair.wsmq.port = 1414
com.ceair.wsmq.queuemanager_name = QM_JACK
com.ceair.wsmq.queue_name_recv =QUEUE_RECV
com.ceair.wsmq.channel=CNN_WANGZS
package com.wangzs.mq;
import org.apache.log4j.Logger;
import org.junit.Test;
/**
* @Title 测试IBM WebSphere MQ收发消息
* @Description 测试类 WSMQRecevicer.java / WSMQSender.java
* @author wangzs
* @date 2016-9-1
*/
public class TestWSMq {
private static Logger logger = Logger.getLogger(TestWSMq.class);
@Test
public void testWSMQSender() {
WSMQSender ms = new WSMQSender();
for (int i = 0; i < 10; i++) {
ms.sendMessage(i + " wangzs ni hao!");
}
logger.info("send message success.");
ms.stop();
}
@Test
public void testWSMQRecevicer() {
WSMQRecevicer mr = new WSMQRecevicer();
logger.info("Receiving message...");
mr.recevicerMessage();
logger.info("Receiving message over.");
mr.stop();
}
}
运行结果: