Jan31

Connect MQ with JMS Adapter

最近参加公司的Adapter系列讲座, 总结一下。XI和MQ之间的消息都是通过JMS Adapter转换。

1. 安装IBM WebSphere Platform
MQ是IBM自己的消息队列管理器,MQ Explorer是基于Eclipse的,所以首先要安装IBM WebSphere Platform (Eclipse).

2.安装IBM WebSphere MQ
 按照Typical安装, Next,Next ...... 比较讨厌的是,安装完了这个MQ之后会覆盖原来的Java Web Start的设置,在进入XI的ID的时候会报错,查看错误信息时候发现居然调用了IBM自带的JRE里头的webstart的lib.... 修复方法是重新安装JRE, 汗...

3.创建一个消息队列管理器(Queue Manager)
在MQ Explorer的树形菜单上右键,选择创建队列管理器,取名QM_NEO,采用缺省设置,侦听端口号默认为1414.

4.调整CCSID
CCSID是编码字符集标识,在简体中文系统上安装MQ,默认的CCSID是1381:

可是XI Server发过来的消息是437 ,消息的字符集不同会导致错误。 解决的办法是在Enviroment Variants里头添加一个变量MQSCCID,如下图:

并且在命令行方式修改Queue Manager的字符集:

runmqsc QM_NEO
alter qmgr ccsid(437)
end

修改之后在MQ Explorer中可能会连接不上这个QM,报的错误也是字符集不同,解决方法是右键点击这个QM,选择“停止命令服务器”,再重新启动就OK了。

5. 建立一个Queue
在QM_NEO下面的队列节点上点击右键,按照默认选项建立一个本地队列,起名Q001_OUT,

 6. 建立一个Server Connection Channel
按照默认选项创建一个服务器通道,起名CH001。 MQ这边的配置就结束了。

7. 部署IBM MQ的lib到XI server上
要想连接不同的消息队列服务器,就要部署不同的jar包,对于IBM MQ来说在安装目录下面的\Java\lib\中可以找到下面的四个jar包:
com.ibm.mq.jar; dhbcore.jar; connector.jar; com.ibm.mqjms.jar 打包,然后用SDM部署到服务器上。

8. IR中的准备
我们的任务是接收从IBM MQ发过来的XML并写成文件,这只是一个简单的DEMO,实际上真正的发送者应该是MQ另一端的Application, 调用MQ的API来发送和接收消息。传输的消息内容我们假定是一个Order, 建立一个Data Type:

简单起见,inbound/outbound的消息都采用同一个结构,然后建立相应的Message Type/Messsage Interface,一一对应的Message Mapping.

9.ID中设置Communication Channel
名字是CC_JMS_SND, Server Port是Queue Manager的Port, JMS Queue和Channel填写第5步和第6步建立的,其他按照默认。

还要建立一个communication channel来将XI接收的消息存到本地文件,名字:CC_J2F_RCV

建立相应的receiver determination, interface determination, receiver agreement, sender agreement.

10. 测试

首先测试一下Communcation Channel for JMS, 在RWB中的Component Monitor中点击Adapter Engine,
点击,输入我们建立的CC_JMS_SND

在MQ中发送消息

登录XI,用T-CODE:SXMB_MONI查看消息,消息传送成功。在\\xxx\id\Neo目录中可以看到生成了文件Order_RCV.txt

从XI到MQ的与这个例子相反。


--EOF--

本篇文章已有0条评论