设为首页 收藏本站
查看: 2079|回复: 0

[经验分享] IBM MQ入门及使用及JMS客户端发送消息到服务器

[复制链接]

尚未签到

发表于 2017-5-27 08:01:24 | 显示全部楼层 |阅读模式
本文是一个最入门级的文章,描述想正常运行样例需要做的操作和遇到的问题。
 
 IBM的产品设计的都比较复杂,上手不容易。最近刚开始使用IBM MQ,针对遇到的一些问题记录一下。
 
       之前我对MQ也稍微有了一点点了解,知道了队列管理器,队列,通道和MCA的概念。安装MQ的服务端,也都是下一步下一步点击完成,没有做任何配置,很顺利的完成了。完成之后可以打开一个类似开发平台的一个东西:

DSC0000.jpg
 

有了这个管理器之后通过管理器简单操作,创建队列管理器,队列和通道成功。
 
注意会有一个问题,就是如何执行命令?
这个我在网上查了好多都没有介绍,以为在上述界面的某个操作中能够提供执行界面。后来才发现,命令是用过“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客户端里的使用的队列一致。
  • 在队列上点击右键选择“属性”。
  • 在属性列表中选择“通信”。
  • “通信”的“通道认证记录”选择“已禁用”。如下图所示:
    DSC0001.jpg
     

  这时候运行样例: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”.
    DSC0002.jpg
  • 在队列"aa"中右键,选择菜单“浏览消息”。
    DSC0003.jpg
     可以看到JmsProducer发送的消息啦,Binggo!
     

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-381495-1-1.html 上篇帖子: 2008“IBM杯”中国大学生SOA业务流程建模竞赛落幕 下篇帖子: (转)IBM研究人员Craig Gentry在"全同态加密"领域的巨大突破
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表