如果还没有安装IBM WebSphere MQ 7.5,请参考WebSphere MQ安装进行安装。
一.创建队列管理器
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
这里系统将处于等待用户输入的状态,随便输入一些消息,然后连敲二次回车,完成消息发送。从WebSphere MQ Explorer中可以看到消息如下:
四.接收消息
amqsget Q1 QM_TEST
把刚才的put换成了get,将从队列管理器QM_TEST的队列Q1中,把消息取出来。从WebSphere MQ Explorer中可以看到消息已不见了。
五.进阶指南
熟悉以上命令行操作后,还可以用图形化的操作方式再强化一遍(建议还是多用命令行模式,因为有些操作只能用命令行完成,比如后面要提到的修改队列管理器编码)。
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连接示例代码
package com.bijian.study; 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 FirstMQDemo { private String qManager;// QueueManager名 private MQQueueManager qMgr; private MQQueue qQueue; private String HOST_NAME; private int PORT = 0; private String Q_NAME; private String CHANNEL; private int CCSID; private String Msg; public void init() { try { HOST_NAME = "bijian-PC";// Hostname或IP PORT = 1414;// 要有一个侦听器,处于活动状态,且监听1414端口 qManager = "QM_TEST"; Q_NAME = "Q1";// Q1是一个本地队列 CHANNEL = "DC.SVRCONN";// QM_TEST上要建一个名为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) { FirstMQDemo firstMQ = new FirstMQDemo(); firstMQ.init(); try { firstMQ.SendMsg("你好,Webshpere MQ 7.5!".getBytes("GBK")); firstMQ.GetMsg(); } catch (Exception e) { e.printStackTrace(); } firstMQ.finalizer(); } }
需要引用的jar包(在MQ的安装目录下都有)
根据上面的操作步骤如上的代码要想运行成功,还需要做如下处理:
1.在队列管理器QM_TEST下新建侦听器
如果没有侦听器,将报2538错误。
2.在队列管理器QM_TEST下新建名为DC.SVRCONN的服务器连接通道
如果没建服务器连接通道,将会报2540错误。
3.关闭通道认证(生产环境不推荐这么做)
关闭方法有两种,一种是通过命令方式
另一种通过IBM WebSphere MQ Explorer视图化操作方式
如果通道认证记录没设置为已禁用,则会报2035错误。
运行结果:
The message is sent! The message is 你好,Webshpere MQ 7.5! 你好,Webshpere MQ 7.5!
十.机器之间迁移
如果要在多台机器上配置相同的队列管理器,一台台机器去创建、设置十分繁琐,可以用命令
dmpmqcfg -m QM_TEST -A > D:QM_TEST_SCRIPT.DUMP
注:其中QM_TEST即为要导出的队列管理器名称,而 "QM_TEST_SCRIPT.DUMP"是导出脚本的文件名,可以随便修改,执行完后会在D盘下生成一个QM_TEST_SCRIPT.DUMP的脚本文件。
这里我们借用了管道操作符号">"在另一台机器上,先把dump文件复制过去(比如就放在c盘根目录下),然后按下列步骤执行。
crtmqm QM_TEST strmqm QM_TEST runmqsc QM_TEST < D:\QM_TEST_SCRIPT.DUMP > D:\QM_TEST_SCRIPT.OUT
这表示runmqsc命令将对 QM_TEST操作,操作的命令来源于脚本文件 C:\QM_TEST_SCRIPT.DUMP,而执行结果会输出到 C:\QM_TEST_SCRIPT.OUT。
导入后再用上面的java客户端代码跑一下,能正常运行,说明导入正常。
相关推荐
了解并熟练掌握这些基本用法,将有助于理解和操作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. **安装与...
WebSphere® MQ (也称...IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以及强大的事务处理能力和消息通讯能力,成为业界市场占有率最高的消息中间件产品。
IBMMQ 7.5.0.2 版本,版本通用,安装及 MQ 环境搭建指南:https://blog.csdn.net/demo_yo/article/details/133200033。
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,是一个强大的消息传递平台,用于在不同应用程序之间可靠地传输数据,确保了数据的高...
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基于发布/订阅和点对点两种消息传递模式。发布/订阅模式下,生产者发布消息到主题...