本文是一个最入门级的文章,描述想正常运行样例需要做的操作和遇到的问题。
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开发环境。操作步骤如下:
- 在eclipse里新建一个普通的java项目,然后把相关的类考进来。
- 把****IBM\WebSphere MQ\java\lib下的jar包考进开发环境并添加到classpath中
- 直接运行样例
运行了那几个类,发现,所有的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!
相关推荐
目的:通过JMS 实现 IBM MQ的请求应答功能 工作原理:消息生产者发送消息到队列IN1,然后可以异步或者同步等待消费者接收到IN1消息后,生成应答消息,并发布到IN2队列中。生产者通过messageid在IN2队列中进行消息...
1) 本工程主要演示在SPRING BOOT工程中怎样使用JMS集成IBM-MQ及TLQ两种消息中间件产品 2) 使用SPRING BOOT Conditional机制实现了两种产品按需加载,工程会根据配置文件开关动态加载 3) 实现了普通队列消息发送与...
JMS 客户端模式实现服务端、客户端;实现同步以及异步的收发处理;
JAVA IBM MQ 接收消息、发送消息例子
ibm mq开发,ibm mq客户端与服务端的连接配置,连接测试。
IBM MQ将消息发送至远程队列,文档详细,有截图,有命令
IBM MQ 完全介绍 ,很全面的的好东东啊
在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。应用程序直接与其本地队列管理器通过使用 MQI 进行对话,MQI 是一组要求队列管理器提供服务的调用。MQI 的引人之处是它只提供 13 次调用。这意味着对于...
jmeter插件,用于进行IBM MQ测试。 部署插件之后,可进行简单配置,即可发送消息到mq通道中 使用方法参见 https://testerhome.com/notes/2193
IBM Websphere MQ入门教程
Websphere MQ JavaJMS 客户端的 SSL 配置.doc
关于IBM MQ的入门教材,是一本比较完整的教材,很适合初学者,希望对大家有帮助
一个C#实现IBM WebSphere MQ 消息收发的实例,包含 发送接收等. 使用的时候只需要修改 appconfig 文件的内容即可. 如有问题.请留言
NULL 博文链接:https://qiaokeli.iteye.com/blog/1782656
A IBM MQ client is part of the product that can be installed on its own, on a separate machine from the base product and server. You can run an IBM MQ application on an IBM MQ client and it can ...
MQSEND,MQGet方法,java消息通信方法。java代码实例。
IBM WebSphere MQ入门教程.pdf
下载后解压即可使用,专门测试远程和本地IBMMQ数据,可以导入导出数据
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 /...