- 在eclipse里新建一个普通的java项目,然后把相关的类考进来。
- 把****IBM\WebSphere MQ\java\lib下的jar包考进开发环境并添加到classpath中
- 直接运行样例
IBM MQ入门及使用及JMS客户端发送消息到服务器
本文是一个最入门级的文章,描述想正常运行样例需要做的操作和遇到的问题。
IBM的产品设计的都比较复杂,上手不容易。最近刚开始使用IBM MQ,针对遇到的一些问题记录一下。
之前我对MQ也稍微有了一点点了解,知道了队列管理器,队列,通道和MCA的概念。安装MQ的服务端,也都是下一步下一步点击完成,没有做任何配置,很顺利的完成了。完成之后可以打开一个类似开发平台的一个东西:
有了这个管理器之后通过管理器简单操作,创建队列管理器,队列和通道成功。
注意会有一个问题,就是如何执行命令?
这个我在网上查了好多都没有介绍,以为在上述界面的某个操作中能够提供执行界面。后来才发现,命令是用过“cmd”弹出dos窗口执行的。
在有些环境下安装完MQ服务端后,使用命令行执行命令会出现“'crtmqm' 不是内部或外部命令,也不是可运行的程序”类似的问题。这时候需要手工把命令所在的目录添加到环境变量Path中。例如:;C:\Program Files (x86)\IBM\WebSphere MQ\bin
在IBM的****IBM\WebSphere MQ\tools\jms\samples目录下有一些样例。想跑一下。我使用的eclipse开发环境。操作步骤如下:
运行了那几个类,发现,所有的java代码都显示一样的结果:
No arguments! Mandatory arguments must be specified.
Usage:
JmsProducer -m queueManagerName -d destinationName [-h host -p port -l channel]
跑一个样例失败~
之后仔细研究了一下代码,发现,需要提供一些参数,代码是需要修改的,而不是直接可以执行的程序。
于是我在 parseArgs(args);代码上方对参数做了下修改: args = new String[]{"-m","aaaa", "-d","aa"};。意思是往名称为“aaaa”队列管理器的"aa"队列里发送消息。在这之前,需要在服务器中创建队列管理器aaaa和aa,并运行。这时候和通道MCA等应该还没有什么关系。运行时提示如下错误:
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器 'aaaa' 提供的安全性认证无效,连接方式为 'Client',主机名为 'localhost(1414)'。
请检查提供的用户名和密码在您正在连接的队列管理器中是否正确。
Inner exception(s):
com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 调用失败,完成代码为 '2' ( 'MQCC_FAILED' ),原因为 '2035' ( 'MQRC_NOT_AUTHORIZED' )。
FAILURE
遇到这个问题的解决方式有两种,一种是去掉通信认证。另一种方式据网上说是增加用户然后添加到用户组然后再怎么着。目前还没找到这种解决方式。
通信认证方式:
- 在MQ服务端选择要通信的队列。注意,这个队列要和java客户端里的使用的队列一致。
- 在队列上点击右键选择“属性”。
- 在属性列表中选择“通信”。
- “通信”的“通道认证记录”选择“已禁用”。如下图所示:
这时候运行样例:eclipse的控制台打印信息如下:
Sent message:
JMSMessage class: jms_text
JMSType: null
JMSDeliveryMode: 2
JMSExpiration: 0
JMSPriority: 4
JMSMessageID: ID:414d5120616161612020202020202020c759fe5020030a02
JMSTimestamp: 1358908084347
JMSCorrelationID: null
JMSDestination: queue:///aa
JMSReplyTo: null
JMSRedelivered: false
JMSXAppID: test.JmsProducer
JMSXDeliveryCount: 0
JMSXUserID: Administrato
JMS_IBM_PutApplType: 28
JMS_IBM_PutDate: 20130123
JMS_IBM_PutTime: 02280436
JmsProducer: Your lucky number today is 315
SUCCESS
再看MQ服务器端:
- 选择队列管理器“aaaa”。选择“aaaa”下的队列“aa”。
- 在MQ资源管理器-内容页中选择队列“aa”.
- 在队列"aa"中右键,选择菜单“浏览消息”。
可以看到JmsProducer发送的消息啦,Binggo!