一、下载7.5 Trial版本
http://www.ibm.com/developerworks/downloads/ws/wmq/
这是下载网址,下载前先必须注册IBM ID,下载完成后一路Next即可(注:windows上安装时,会询问是否域环境,初次学习时,为简单起见,建议选择No)
安装完成后,MQ的Bin目录会自动添加到环境变量Path中,以后就可以直接用Dos命令行窗口操作(当然,也可以用图形化GUI方式通过IBM WebSphere MQ Explorer来管理)
注:安装时,强烈建议用管理员Administrator身份安装,否则安装完成后,有可能license无法生效、runmqsc命令模式下无法正常执行命令.
二、创建队列管理器
WIN + R键,输入cmd,进入命令行窗口,键入:
crtmqm QM_TEST
创建一个队列管理器QM_TEST(你可以改成自己想要的名字),如果把整个MQ理解成一个数据库实例,QM_TEST相当于就是db instance中的schema(或user)
命令行创建的队列管理器默认是不活动状态的,可以用
strmqm QM_TEST
来启动队列管理器
三、创建队列
如果说“队列管理器”是db中的schema,那么"队列"就相当于db中的Table了,而队列中的每条"消息",就相当于Table中的每条记录,继续在命令行窗口模式下,输入
runmqsc QM_TEST
将进入MQ的交互命令模式,继续输入
define qlocal(Q1)
将创建一个本地队列Q1(你可以改成自己需要的名字),如果此时你打开 "开始菜单->程序->IBM WebSphere MQ->WebSphere MQ Explorer (Installation1)"也能同步在图形界面下,看到这个队列
最后键入end,退出MQ的交互命令模式。
四、发送消息
继续在Windows命令模式下,输入
amqsput Q1 QM_TEST
这里系统将处于等待用户输入的状态,随便输入一些消息,然后连敲二次回车,完成消息发送
五、接收消息
amqsget Q1 QM_TEST
把刚才的put换成了get,将从队列管理器QM_TEST的队列Q1中,把消息取出来
六、进阶指南
熟悉以上命令行操作后,还可以用图形化的操作方式再强化一遍(建议还是多用命令行模式,因为有些操作只能用命令行完成,比如后面要提到的修改队列管理器编码)
WebSphere MQ Explorer中,从"帮助"菜单里调出帮助文档,里面有一个不错的教程,强烈推荐新手看一遍
不过,"教程2:将消息发送至远程队列"这里,帮助文档上有几个细节没讲透,导致初次用命令行照着做,可能会不成功,几个要点如下:
1、通道命名问题
发送方与接收方的通道名称,必须一样,这样二边才能对应起来
2、接收方必须要有侦听器,而且要处于激活状态
3、发送方的发送通道中,连接名称格式为:"<接收方HostName或IP地址>(接收方-队列管理器-侦听器的TCP端口) ,不包括"<>“,比如比如:yangjm(1514)或172.12.134.14(1514)
4、发送方的发送通道必须处于激活状态,如果通道启动失败,尝试右键->ping/复位,如果还不行,检查上述要点1-3是否设置有问题
七、远程连接问题
图形方式添加“远程队列管理器”时,如果远程队列也是7.x或以上版本,当前登录用户是管理员时,将提示权利不足,拒绝连接,原因是7.0以上,MQ提高了安全性,会默认拦截管理员,详情可参考IBM上的解释 http://www-01.ibm.com/support/docview.wss?uid=swg21636532
解决方式:
1. 更换当前用户,建一个mqm用户组(MQ安装后,会默认创建该Windows用户组)的用户,然后以该用户身份登录操作
2.参考IBM上的解释,如果出于学习目的,最简单的做法,就是在runmqsc交互模式下,键入
ALTER QMGR CHLAUTH(DISABLED) 直接关闭通道认证(生产环境不推荐这么做)
另外,要想本机上的队列能被远程管理,前提是该队列管理器允许远程管理,操作方式:队列管理器上右击->选择"远程管理...",接下来的事情大家都知道
八、字符集编码问题
每个队列管理器,都有一个CCSID的属性,对应的就是字符集编码,在windows系统中,这个编码应该是1381,如果你是用其它OS(比如linux)的配置通过脚本导入MQ的,可能编码就不是1381了,这会导致在windows上无法连接\启动队列管理器,可以通过MQ交互命令行修改,
runmqsc QM_TEST 进入QM_TEST的MQ交互模式
DISPLAY QMGR CCSID 查看当前的CCSID属性
ALTER QMGR CCSID(1381) 修改字符集编码为1381
九、如何从“试用版”升级成“正式版”
试用版默认只能用90天,到期后,如果购买了正式版的license,可以通过命令行导入license,命令如下:
setmqprd x:\license\amqpcert.lic
注:amqpcert.lic中的P即代表这是Product生产版本,setmqprd 后面的路径即为license文件的所在路径
十、java连接示例代码
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;
int PORT = 0;
String Q_NAME;
String CHANNEL;
int CCSID;
String Msg;
public void init() {
try {
HOST_NAME = "yangjm";//Hostname或IP
PORT = 1414;//要有一个侦听器,处于活动状态,且监听1414端口
qManager = "QM_APPLE";
Q_NAME = "Q1";//Q1是一个本地队列
CHANNEL = "DC.SVRCONN";//QM_APPLE上要建一个名为DC.SVRCONN的服务器连接通道
CCSID = 1381; // 表示是简体中文,
// CCSID的值在AIX上一般设为1383,如果要支持GBK则设为1386,在WIN上设为1381。
MQEnvironment.hostname = HOST_NAME; // 安裝MQ所在的ip address
MQEnvironment.port = PORT; // TCP/IP port
MQEnvironment.channel = CHANNEL;
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) {
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode + " Reason Code is "
+ e.reasonCode);
}
}
void finalizer() {
try {
qQueue.close();
qMgr.disconnect();
} catch (MQException e) {
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode + " Reason Code is "
+ e.reasonCode);
}
}
/*
* 取过一次,下次就没有了
*/
public void GetMsg() {
try {
MQMessage retrievedMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options += MQC.MQPMO_SYNCPOINT;
qQueue.get(retrievedMessage, gmo);
int length = retrievedMessage.getDataLength();
byte[] msg = new byte[length];
retrievedMessage.readFully(msg);
String sMsg = new String(msg);
System.out.println(sMsg);
} catch (RuntimeException e) {
e.printStackTrace();
} catch (MQException e) {
if (e.reasonCode != 2033) // 没有消息
{
e.printStackTrace();
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode
+ " Reason Code is "
+ e.reasonCode);
}
} catch (java.io.IOException e) {
System.out
.println("An error occurred whilst to the message buffer "
+ e);
}
}
public void SendMsg(byte[] qByte) {
try {
MQMessage qMsg = new MQMessage();
qMsg.write(qByte);
MQPutMessageOptions pmo = new MQPutMessageOptions();
qQueue.put(qMsg, pmo);
System.out.println("The message is sent!");
System.out.println("\tThe message is " + new String(qByte, "GBK"));
} catch (MQException e) {
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode + " Reason Code is "
+ e.reasonCode);
} catch (java.io.IOException e) {
System.out
.println("An error occurred whilst to the message buffer "
+ e);
}
}
/**
* @param args
*/
public static void main(String[] args) {
MQTest mqst = new MQTest();
mqst.init();
try {
mqst.SendMsg("你好,Webshpere MQ 7.5!".getBytes("GBK"));
mqst.GetMsg();
} catch (Exception e) {
e.printStackTrace();
}
mqst.finalizer();
}
}
View Code 需要引用的jar包(在MQ的安装目录下都有)
附示例源代码下载地址: http://pan.baidu.com/s/1qWrs9iO
十一、机器之间迁移
如果要在多台机器上配置相同的队列管理器,一台台机器去创建、设置十分繁琐,可以用命令
dmpmqcfg -m QM_TEST -A > C:\SCRIPT\QM_TEST_SCRIPT.DUMP
注:其中QM_TEST即为要导出的队列管理器名称,而 "QM_TEST_SCRIPT.DUMP"是导出脚本的文件名,可以随便修改,执行完后会在"C:\SCRIPT\"下生成一个“.dump”的脚本文件,这里我们借用了管道操作符号">"
在另一台机器上,先把dump文件复制过去(比如就放在c盘根目录下),然后按下列步骤执行
crtmqm QM_TEST
strmqm QM_TEST
runmqsc QM_TEST < C:\QM_TEST_SCRIPT.DUMP > C:\QM_TEST_SCRIPT.OUT
这表示runmqsc命令将对 QM_TEST操作,操作的命令来源于脚本文件 C:\QM_TEST_SCRIPT.DUMP,而执行结果会输出到 C:\QM_TEST_SCRIPT.OUT
分享到:
相关推荐
了解并熟练掌握这些基本用法,将有助于理解和操作IBM WebSphere MQ 7.5,实现高效的消息传递和系统集成。在实际应用中,还需要考虑更多高级特性,如集群、事务处理、安全策略等,以满足不同业务需求。
3. **版本信息**:这里提供的安装包为WS_MQ_V7.5.0.2_TRIAL_FOR_WINDOWS_ML,表明这是WebSphere MQ的7.5.0.2试用版,专为Windows平台设计。"ML"通常代表“Multilingual”,意味着该版本支持多语言。 4. **安装与...
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 /...
MQ客户端安装包7.5.0.3是IBM WebSphere MQ客户端的一个版本,它提供了与IBM消息中间件交互的能力。WebSphere MQ,通常简称为MQ,是一个强大的消息传递平台,用于在不同应用程序之间可靠地传输数据,确保了数据的高...
WebSphere® MQ (也称...IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以及强大的事务处理能力和消息通讯能力,成为业界市场占有率最高的消息中间件产品。
IBMMQ 7.5.0.2 版本,版本通用,安装及 MQ 环境搭建指南:https://blog.csdn.net/demo_yo/article/details/133200033。
IBM MQ(原名WebSphere MQ)是IBM提供的一款企业级的消息中间件,它允许应用程序在不同的网络协议和操作系统之间安全地交换消息。在Java开发环境中,与IBM MQ 7.5进行对接时,通常需要一系列特定的JAR依赖包来支持...
IBM MQ 7.5.0 windows版本压缩包第一部分,共2部分(分割是为了满足平台只能上传260MB文件的要求)。
Websphere MQ 7.5 Jar是IBM提供的一款中间件产品Websphere MQ的特定版本——7.5版的Java库文件集合。这个版本的MQ是企业级消息传递系统,用于在不同应用程序之间可靠地传输数据,确保了数据的高效、安全和有序交换。...
IBM WebSphere MQ入门教程 IBM WebSphere MQ 是一种基于消息队列的中间件,用于实现不同的应用程序之间的异步通信。下面是对 IBM WebSphere MQ 的入门教程的总结,涵盖了 WebSphere MQ 的原理、体系结构、重要特点...
Java监控WebSphere MQ 7.5中间件信息主要涉及到的是如何使用Java编程语言与IBM的WebSphere MQ消息中间件进行交互,以便收集、分析和管理MQ的运行时信息。WebSphere MQ,以前被称为MQSeries,是IBM提供的一种企业级的...
IBM WebSphere MQ 技术白皮书 IBM WebSphere MQ 技术白皮书是 IBM 公司发布的一份技术白皮书,旨在介绍 IBM WebSphere MQ 产品的技术特性、架构和价值。下面是根据白皮书的内容生成的相关知识点。 概述 在概述...
IBM Websphere MQ V7.5 简单存取报文demo,包含报头相关操作,需要本地安装IBM Websphere MQ V7.5
官网搬运 一共21个pdf文件 其中 一个pdf获取不到 应该是官网下掉了 其余pdf相对较全 refconfig.pdf(The requested URL was ...https://public.dhe.ibm.com/software/integration/wmq/docs/V7.5/PDFs/mq75.refconfig.pdf
在IT行业中,IBM WebSphere MQ(也称为IBM MQ)是一种广泛使用的中间件,它允许应用程序在不同的网络协议、操作系统和硬件之间可靠地交换消息。在这个“Java下操作IBM Websphere MQ的项目案例”中,我们将探讨如何...
WebSphere® MQ (也称...IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以及强大的事务处理能力和消息通讯能力,成为业界市场占有率最高的消息中间件产品。
【IBM WebSphere MQ安装使用教程详细图解】 IBM WebSphere MQ,简称MQ,是一款由IBM提供的消息中间件,它允许应用程序之间可靠地交换信息,无论它们位于何处或使用何种操作系统。本教程旨在指导用户在Windows系统上...
IBM websphereMQ 8.0.0.5 lib包; IBM\WebSphere MQ\java\lib下的文件 文件列表: com.ibm.mq.jms.Nojndi.jar com.ibm.mq.pcf.jar com.ibm.mq.allclient.jar com.ibm.mq.postcard.jar com.ibm.mq.axis2.jar ...
本教程将带你深入理解WebSphere MQ的基本概念和使用方法,帮助你快速入门。 1. **消息队列基础**: - **消息模型**:WebSphere MQ基于发布/订阅和点对点两种消息传递模式。发布/订阅模式下,生产者发布消息到主题...