MQ发送消息及读取消息的简单操作

MQ应用程序的开发,简单的实现一下关键的发送消息和接收消息的操作.首先做简单的准备工作,建队列管理器QM1,在QM1中建队列Q1,然后在高级中建立通道BICASHY,类型为服务器连接通道,端口号1414,这里做最简单的配置,死信、传输队列及远程队列都暂时不建。。。
注:如果建另一个队列管理器QM2,其侦听端口一定不能和1414重复。

package com.wondertek.flow.test;

import java.io.IOException;

import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;

public class MQManager {

	private MQQueueManager qMgr;

	private void getConnMQmanager() {
		MQEnvironment.hostname = "77.20.17.15";// MQ服务器IP
		MQEnvironment.channel = "BICASHY";     // 队列管理器对应的服务器连接通道
		MQEnvironment.CCSID = 1381;            // 字符编码
		MQEnvironment.port = 1414;             // 队列管理器的端口号
		try {
			qMgr = new MQQueueManager("QM1");// 队列管理器名称
		} catch (MQException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void closeConnMQmanager() {
		if (qMgr != null) {
			try {
				qMgr.close();
			} catch (MQException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public void sendMsg(String msgStr){
		int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;
		MQQueue queue = null;
		try {
			//建立Q1通道的连接
			queue = qMgr.accessQueue("Q1", openOptions, null, null,null);  
			MQMessage msg = new MQMessage();// 要写入队列的消息
			msg.format = MQC.MQFMT_STRING;
			msg.characterSet = 1381;
			msg.writeObject(msgStr); //将消息写入消息对象中
			MQPutMessageOptions pmo = new MQPutMessageOptions();
			msg.expiry = -1;    // 设置消息用不过期
			queue.put(msg, pmo);// 将消息放入队列
		} catch (MQException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(queue!=null){
				try {
					queue.close();
				} catch (MQException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	public void receiveMsg()
	{
		int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;
		MQQueue queue = null;
		try {
			queue = qMgr.accessQueue("Q1", openOptions, null, null,null);
			
			System.out.println("该队列当前的深度为:"+queue.getCurrentDepth());
			System.out.println("===========================");
			int depth = queue.getCurrentDepth();
			//将队列的里的消息读出来
			while(depth-->0)
			{
				MQMessage msg = new MQMessage();// 要读的队列的消息
				MQGetMessageOptions gmo = new MQGetMessageOptions();
				queue.get(msg, gmo);
				System.out.println("消息的大小为:"+msg.getDataLength());
				System.out.println("消息的内容:\n"+msg.readObject());
				System.out.println("---------------------------");
			}
		} catch (MQException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(queue!=null){
				try {
					queue.close();
				} catch (MQException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	public static void main(String[] args) {
		MQManager mm = new MQManager();
		mm.getConnMQmanager();
		try {
			mm.sendMsg("第一条测试信息");
			mm.sendMsg("test第二条测试信息");
			mm.receiveMsg();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		mm.closeConnMQmanager();
	}
}

你可能感兴趣的:(应用服务器,工作,IBM,配置管理)