WebSphere MQ安装配置,java发送接收消息

原创 2016年08月31日 09:18:46

一.准备工作

1.IBM WebSphere MQ安装,给用户赋权限

参考: http://my.oschina.net/barter/blog/115502
完成WebSphere MQ安装,给用户赋权限(不要创建队列管理器,本地队列,通道,下边有创建步骤)
用户赋权成功如下图所示:

二.创建MQ队列管理器,本地队列,通道

命令方式均在windows控制台 C:\Program Files (x86)\IBM\WebSphere MQ\bin> 路径下执行

1.创建队列管理器

使用 WebSphere MQ 资源管理器:

1.启动 WebSphere MQ 资源管理器。 
2.在“导航器”视图中,右键单击队列管理器文件夹,然后单击新建 > 队列管理器。 将打开“创建队列管理器”向导。 
在队列管理器名称字段中,输入 QM_JACK 。
3.单击两次下一步。 确保从选择队列管理器启动类型选项中选择自动。 
4.单击下一步。 
5.确保选中创建配置用于 TCP/IP 的侦听器复选框。 
6.如果完成按钮不可用,那么在侦听端口号字段中输入另一个端口号。 如果当前值为 1414,那么尝试使用另一个端口号,例如:1415 或 1416。如果此阶段未使用缺省端口号 1414,请记录所使用的端口号,因为在本教程的后面阶段中 QM_JACK 充当接收队列管理器时将需要此端口号。 
7.单击完成。

使用 MQSC 创建队列管理器:

1.通过输入以下命令,创建名为 QM_JACK 的队列管理器: 
crtmqm QM_JACK
2.通过输入以下命令来启动此队列管理器: 

strmqm QM_JACK


2.创建本地队列

使用 WebSphere MQ 资源管理器:

1.在“导航器”视图中,展开队列管理器文件夹。 
2.展开队列管理器 QM_JACK 。 
3.右键单击队列文件夹,然后单击新建 > 本地队列。 将打开“新建本地队列”向导。 
4.在名称字段中,输入 QUEUE_RECV 。 
5.单击完成。

使用 MQSC 本地队列:

1.通过输入以下命令来启用 MQSC 命令: 
runmqsc QM_JACK
2.输入以下命令: 
define qlocal(QUEUE_RECV)
此时会显示消息,告诉您已经创建了队列和缺省 WebSphere MQ 对象。
3.通过输入以下命令来停止 MQSC: 

end


3.创建通道

使用 WebSphere MQ 资源管理器:

1.在 QM_JACK队列管理器右键通道
2.新建,服务器连接通道
3.输入名称 QUEUE_RECV

4.下一步完成


三.验证MQ是否配置成功

1.发送消息:

amqsput 本地队列 队列管理器
amqsput QUEUE_RECV QM_JACK
随便输入一些消息,然后连敲二次回车,完成消息发送


2.接收消息:

amqsget 本地队列 队列管理器

amqsget  QUEUE_RECV QM_JACK


四.java发送接收消息

java代码依赖的jar包下载地址:
http://download.csdn.net/detail/adam_zs/9617526


package com.ceair.mq;

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;

/**
 * @Title WebSphere MQ 发送/接受消息
 * @Description
 * @author wangzs
 * @date 2016-8-30
 */
public class WebSphereMQ {
	// 定义队列管理器和队列的名称
	private static String hostname = "10.80.63.101"; // MQ服务器的IP地址
	private static int port = 1414; // MQ端口
	private static int ccsid = 1381; // 服务器MQ服务使用的编码1381代表GBK、1208代表UTF
	private static String qmName = "QM_JACK"; // MQ的队列管理器名称;
	private static String channel = "CNN_JACK"; // 服务器连接的通道
	private static String qName = "QUEUE_RECV"; // MQ远程队列的名称;
	private static MQQueueManager qMgr;

	// 初始化
	static {
		MQEnvironment.hostname = hostname;
		MQEnvironment.channel = channel;
		MQEnvironment.CCSID = ccsid;
		MQEnvironment.port = port;
		try {
			// 定义并初始化队列管理器对象并连接
			qMgr = new MQQueueManager(qmName);
		} catch (MQException e) {
			System.out.println("初使化MQ出错");
			e.printStackTrace();
		}
	}

	// 往MQ发送消息
	public static String sendMessage(String message) {
		try {
			// 设置将要连接的队列属性
			int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
			// 连接队列,关闭了就重新打开
			if (qMgr == null || !qMgr.isConnected()) {
				qMgr = new MQQueueManager(qmName);
			}
			MQQueue queue = qMgr.accessQueue(qName, openOptions);
			// 定义一个简单的消息
			MQMessage putMessage = new MQMessage();
			// 将数据放入消息缓冲区
			putMessage.writeUTF(message);
			// 将消息写入队列
			queue.put(putMessage, new MQPutMessageOptions());
			queue.close();
		} catch (MQException ex) {
			ex.printStackTrace();
			System.out.println("A WebSphere MQ error occurred : Completion code " + ex.completionCode + " Reason code "
					+ ex.reasonCode);
		} catch (IOException ex) {
			System.out.println("An error occurred whilst writing to the message buffer: " + ex);
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				qMgr.disconnect();
			} catch (MQException e) {
				e.printStackTrace();
			}
		}
		return "sendMessage success! {" + message + "}";
	}

	// 从队列中去获取消息,如果队列中没有消息,就会发生异常
	public static String getMessage() {
		String message = null;
		try {
			// 设置将要连接的队列属性
			int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
			MQMessage retrieve = new MQMessage();
			// 设置取出消息的属性(默认属性)
			MQGetMessageOptions gmo = new MQGetMessageOptions();
			gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;// 在同步点控制下获取消息
			gmo.options = gmo.options + MQC.MQGMO_WAIT; // 如果在队列上没有消息则等待
			gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;// 如果队列管理器停顿则失败
			gmo.waitInterval = 1000; // 设置等待的毫秒时间限制
			// 关闭了就重新打开
			if (qMgr == null || !qMgr.isConnected()) {
				qMgr = new MQQueueManager(qmName);
			}
			MQQueue queue = qMgr.accessQueue(qName, openOptions);
			// 从队列中取出消息
			queue.get(retrieve, gmo);
			message = retrieve.readUTF();
			queue.close();
		} catch (MQException ex) {
			System.out.println("A WebSphere MQ error occurred : Completion code " + ex.completionCode + " Reason code "
					+ ex.reasonCode);
		} catch (IOException ex) {
			System.out.println("An error occurred whilst writing to the message buffer: " + ex);
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				qMgr.disconnect();
			} catch (MQException e) {
				e.printStackTrace();
			}
		}
		return " getMessage success! {" + message + "} ";
	}
}


package com.ceair.mq;

import org.junit.Test;

/**
 * @Title 测试WebSphere MQ 发送/接受消息
 * @Description
 * @author wangzs
 * @date 2016-8-30
 */
public class TestWebSphereMQ {

	@Test
	public void testSendMessage() {
		System.out.println(WebSphereMQ.sendMessage("TestWebSphereMQ hello word!"));
	}

	@Test
	public void testGetMessage() {
		System.out.println(WebSphereMQ.getMessage());
	}

}

测试结果:

sendMessage success! {TestWebSphereMQ hello word!}
 getMessage success! {TestWebSphereMQ hello word!} 


相关文章推荐

WebSphere MQ Java 应用开发简单实例

1-背景知识 IBM MQ支持多种语言开发,本文主要是考虑Java应用开发,MQ提供了相关的Java类库,可以很方便集成到Java应用中。  IBM MQ Java相关类库允许Java应用...

MQ7.5以后的权限问题解决

MQ7.5以后权限是个问题,目前我也没有什么特别好的解决办法,把认证通道关闭就可以正常使用。 下面是IBM 官方的解释,可惜我没调通,望高人指点! 疑问 您使用MQ 7.1或者7...

在CentOS 7上快速安装配置WebSphere MQ 7.5快速指南

最近要在CentOS 7上WebSphere MQ 7.5,惊叹于IBM文档的浩繁(也许是笔者没找对地方),在这里安装配置的步骤整理成一篇小文,供像笔者一样的小白参考。 安装MQ产品 1) 上传并...

WebSphere MQ7.5教程——教程 3:基于客户机/服务器配置发送消息

本教程介绍了如何设置客户机与服务器之间的消息传递。您从客户机将消息放入服务器上托管的队列管理器 QM_ORANGE。QM_ORANGE 将该消息发送至另一服务器上托管的QM_APPLE 上的 Q1。 ...

WebSphere MQ中将消息发送至远程队列的配置

在学习本教程之前,你需要先在linxu环境下安装MQ并配置完成,可以百度一下教程很多,很简单。(入职第一天老大给了一个任务四天时间学习IBM MQSeries并写一份学习报告,现在基本上初步对MQ消息...

WebSphere MQ发送接收消息_二

WebSphere MQ发送接收消息_二 MQQueueConnectionFactory
  • adam_zs
  • adam_zs
  • 2016年09月02日 13:49
  • 652

IBM WebSphere MQ消息通道的配置和维护介绍(一)

转自:http://hi.baidu.com/xiangnvbing/blog/item/4f8e11f71bb10332730eecc5.html       ...

IBM WebSphere MQ消息通道的配置和维护介绍

1. 概述 WebSphere MQ作为IBM软件家族的消息传输中间件产品,以其出色的特性和功能在业界享有盛誉。WebSphere MQ独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性...
  • eyetee
  • eyetee
  • 2011年09月02日 15:54
  • 12043

WebSphere MQ7.5教程——教程 1:将消息发送至本地队列

本教程介绍了如何在与任何其他 WebSphere® MQ 安装没有任何通信链路的本地独立安装上设置队列管理器 QM_APPLE 和队列 Q1。定义对象后,可使用多种工具来测试该设置。第一个任务是放置测...

WebSphere MQ7.5教程——教程 2:将消息发送至远程队列

本教程演示如何设置名为 QM_ORANGE 的队列管理器和名为 QM_APPLE 的队列管理器之间的消息传递。您可以通过将同一计算机上的发送队列管理器设置为目标队列管理器,完成本教程并验证环境。在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebSphere MQ安装配置,java发送接收消息
举报原因:
原因补充:

(最多只允许输入30个字)