IBM WebSphere MQ讲解2——JAVA测试

前两章,粗略的讲述了如何使用WebShphere MQ Explorer来完成发送消息的功能,但仅限与在客户端使用,在IBM客户端中的工具栏里,选择帮助-WebSphereMQ教程会有更为详细的教程。在这里我就不多说了。接下来,我们编写JAVA测试类来查看发送的消息。

PS:我這裡有一些關於MQ的文檔教程,有需要的大家可以在這裡下載

IBMMQ安裝教程

MQ的安裝及配置

MQ_JMS_发布订阅配置、代码

MQ錯誤代碼合集


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;

/*
 * 可以在MQ的资源管理器的某一个队列上放入测试消息、浏览消息等
 * 可以放入多条消息,按先进先出的方式取得
 */
public class MQTest {

	private String qManager;		// QueueManager名
	private MQQueueManager qMgr;	// 队列管理器名称
	private MQQueue qQueue;			// 消息通道
	String HOST_NAME;				// 主机名,在这里我填写了IP地址
	int PORT = 0;					// 端口号
	String Q_NAME;					// 本地队列
	String CHANNEL;					// 连接通道
	int CCSID;
	String Msg;

	/**
	 * 初始化
	 */
	public void init() {
		try {
			HOST_NAME = "10.10.10.223";
			PORT = 1414;
			qManager = "QM_APPLE";
			Q_NAME = "Q1";
			CHANNEL = "QM_ORANGE.QM_APPLE";
			CCSID = 1383; // 表示是简体中文,
			MQEnvironment.hostname = HOST_NAME;
			MQEnvironment.port = PORT;
			MQEnvironment.channel = "SYSTEM.DEF.SVRCONN";
			MQEnvironment.CCSID = CCSID;
			qMgr = new MQQueueManager(qManager);
			int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | MQC.MQOO_OUTPUT;
			qQueue = qMgr.accessQueue(Q_NAME, qOptioin);
		} catch (MQException e) {
			e.printStackTrace();
			System.out.println("发生了一起异常,异常原因:" + e.reasonCode);
		}
	}

	void finalizer() {
		try {
			qQueue.close();
			qMgr.disconnect();
		} catch (MQException e) {
			System.out.println("发生了一起异常,异常原因:" + e.reasonCode);
		}
	}

	/*
	 * 获取消息
	 */
	public void GetMsg() throws ClassNotFoundException {
		try {
			MQMessage revMessage = new MQMessage();
			MQGetMessageOptions gmo = new MQGetMessageOptions();
			revMessage.characterSet=CCSID;
			revMessage.encoding=CCSID;
			gmo.options += MQC.MQPMO_SYNCPOINT;
			qQueue.get(revMessage, gmo);
			
			String revString = revMessage.readStringOfByteLength(revMessage.getMessageLength());
            System.out.println("接收到的内容:"+revString);
            
		} catch (RuntimeException e) {
			e.printStackTrace();
		} catch (MQException e) {
			if (e.reasonCode != 2033) // 没有消息
			{
				System.out.println("发生了一起异常,异常原因:" + e.reasonCode);
				e.printStackTrace();
			}
		} catch (java.io.IOException e) {
			System.out.println("发生了一起IO异常:" + e);
			e.printStackTrace();
		}
	}

	/**
	 * 发送消息
	 * 
	 * @param qByte
	 */
	public void SendMsg(String msgStr) {
		try {
			MQMessage qMsg = new MQMessage();
			qMsg.encoding=CCSID;
			qMsg.characterSet=CCSID;
			qMsg.writeString(msgStr);
			MQPutMessageOptions pmo = new MQPutMessageOptions();
			qQueue.put(qMsg, pmo);
			System.out.println("消息发送成功!发送的内容是:" + msgStr);
		} catch (MQException e) {
			System.out.println("发生了一起异常,异常原因:" + e.reasonCode);
		} catch (java.io.IOException e) {
			System.out.println("发生了一起IO异常:" + e);
		}
	}

	public static void main(String[] args) {

		MQTest mqst = new MQTest();
		mqst.init();
		try {
			mqst.SendMsg("你好,我是一条测试消息!");
			mqst.GetMsg();
		} catch (Exception e) {
			e.printStackTrace();
		}
		mqst.finalizer();
	}

}

我把注释都加在了类里,应该不难懂,编写到这里,可能会遇到各种各种的问题。我在测试的时候,仅遇到1个2059的错误,只需要把CHANNEL的值改成我类里的即可,不要填写自己创建的通道名。其他如果有遇到错误,请百度错误代码来寻求更多的帮助。

IBM WebSphere MQ讲解1:http://blog.csdn.net/u012552275/article/details/62046103

IBM WebSphere MQ讲解2:http://blog.csdn.net/u012552275/article/details/62216360

IBM WebSphere MQ讲解2——JAVA测试:http://blog.csdn.net/u012552275/article/details/62216565

WebSphere MQ使用:http://blog.csdn.net/u012552275/article/details/70194285

使用JAVA代码发送MQ消息:http://blog.csdn.net/u012552275/article/details/70194644

JAVA发送接收MQ代码示例:http://blog.csdn.net/u012552275/article/details/70194969


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值