一、下载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基本用法
IBMMQ 7.5.0.2 版本,版本通用,安装及 MQ 环境搭建指南:https://blog.csdn.net/demo_yo/article/details/133200033。
WebSphere® MQ (也称...IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以及强大的事务处理能力和消息通讯能力,成为业界市场占有率最高的消息中间件产品。
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客户端安装包
IBM WebSphere MQ是IBM业界领先面向消息的中间件产品,也是MQ系列产品的基础和核心,它使不同的应用程序能够以企业级的性能,在广泛的平台上安全而可靠地通讯。
IBM Websphere MQ V7.5 简单存取报文demo,包含报头相关操作,需要本地安装IBM Websphere MQ V7.5
IBM MQ 7.5.0 windows版本压缩包第一部分,共2部分(分割是为了满足平台只能上传260MB文件的要求)。
官网搬运 一共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
WebSphere® MQ (也称...IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以及强大的事务处理能力和消息通讯能力,成为业界市场占有率最高的消息中间件产品。
7.5版本所有jar,方便一些不适合从客户端拷贝jar的人下载。
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 ...
Java 通过PCF连接WebSphere MQ7.1以上版本获取数据。!!!
IBM Websphere MQ 教程之备份与恢复
IBM WebSphere MQ 技术白皮书.doc
IBM WebSphere MQ入门教程.pdf
IBM WebSphere MQ 8.0 linux 安装包 part3,IBM WebSphere MQ 8.0 linux 安装包 part3
IBM Websphere mq安装IBM Websphere mq安装
java调用ibmmq最全版本jar包,包含connectorjava调用ibmmq最全版本jar包,包含connectorjava调用ibmmq最全版本jar包,包含connector