IBM WebSphere MQ 快速入门: 安装, 配置, Java调用

Categories: Java; Tagged with: ; @ December 2nd, 2012 0:25

非常简单的快速入门: 从Host发送Message到VM.

MQ版本:  7.5

操作系统版本:

主机/Host: Windows 7 64 Home
虚拟机/VM:    XP Pro SP3

1. 下载及安装

在IBM.com可直接下载IBM的试用版. (需要登录)

之后的安装非常简单, 不做描述.

2. 配置

配置概要

依次配置: QueueManager, Queue, Channel:

  Name @Host Name @VM Remarks
Queue Manager QM_Host QM_VM Keep other options default
Queues Host_TRAN_Q VM_LOCAL_RECEIVE_Q Local queue, Usage: Transmission
  Host_Remote_Send_Q VM只接受, 因此不需配置. Remote queue. need config:
1. Remote queue: (For Host, VM is the remote)
2. Remote queue manager:
3. Transmission queue:
Ref to screen capture 1
Channels HOST_SEND_CHANNEL
Ref to screen capture 2
HOST_SEND_CHANNEL [很抱歉, 命名很烂]
Host端Type: Sender; VM端: Receiver
保持相同名称.
  ChannelServerConnTes ChannelServerConnTes Type:Server-connection, 配置MCA user或保持默认
为Java端配置

 

SNAGHTML2c9c733

(配置Remote queue, Remote queue manager, 对Host来说, VM就是Remote, 因此配置为VM中的队列名称)

SNAGHTML2d0ebd3

(发送队列, Connection Name实际为Remote server的IP(port))

由于配置较多, 因此将Host及VM两侧的Queue及Channel抓图如下:

Host:

image

image

VM:

image

image

 

3. 测试

在上述Queue manager, Queue, Channel配置妥当之后, 进行测试:

1. 在Host端,  选中HOST_SEND_CHANNEL (Sender)后, 右键 “ping” 测试:

image

如果测试失败, 关闭或配置防火墙.

2. 放入消息进行测试:

确定两端HOST_SEND_CHANNEL (Sender)启动后(状态应为Running), 在Host端的Host_Remote_Send_Q (Remote) 右键 Put message.

在VM端, 队列中可以看到收到Message:

image

至此, MQ已经配置完毕并通过测试.

 

4. 使用Java调用

前置条件: 创建type为Server-connection的Channel. 本例中的ChannelServerConnTes, 该Channel无法开启, 创建完毕后供Java端使用.

先拿来用:
http://java-brew.blogspot.sg/2011/01/java-code-to-connect-to-mq.html 或:

http://blog.csdn.net/fenglibing/article/details/4161441

5. 常见错误及解决

 

1. Channel ping不通

检查防火墙.

2. MQJE001: Completion Code ‘2’, Reason ‘2035’.

如果供Java端使用的Server-connection.MCA中不填入正确的UserID (mqm用户组中的用户), 会导致如下之错误信息:

MQJE001: Completion Code ‘2’, Reason ‘2035’.

解决方法有:

1. Channel中配置MCA UserID:
image

(需要保证该用户在操作系统mqm用户组中)

2. 禁用Channel认证:

运行: IBM\WebSphere MQ\bin\runmqsc.exe:

alter qmqr chlauth(disabled)

由于我的Win7 Home无法管理用户组, 所以直接用第二种方法disable掉channel 认证.

ref: http://space.itpub.net/14789789/viewspace-374497 or http://blog.csdn.net/javalover_yao/article/details/6387460

 

3. MQJE001: Completion Code ‘2’, Reason ‘2539’

错误信息:

CC=2;RC=2539;AMQ9204: Connection to host ‘192.168.1.220(1414)’ rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2539;AMQ9547: Type of remote channel not suitable for action requested. [3=HOST_SEND_CHANNEL]],3=192.168.1.220(1414),5=RemoteConnection.analyseErrorSegment]

使用了错误的Channel, 供Java使用的Channel type应为: Server-connection.

 

4. Java中 new MQQueueManager时耗时很久, 最后抛出异常:

com.ibm.mq.MQException: MQJE001: Completion Code ‘2’, Reason ‘2009’.

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2009;AMQ9204: Connection to host ‘192.168.1.220(1414)’ rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2009;AMQ9208: Error on receive from host ‘/192.168.1.220:1414 (Guoliang-PC)’. [1=-1,2=ffffffff,3=/192.168.1.220:1414 (Guoliang-PC),4=TCP]],3=192.168.1.220(1414),5=RemoteConnection.receiveTSH]

检查MQEnvironment是否设置了编码CCSID.  如:MQEnvironment.CCSID=1381;

 

6. 参考资料:

IBM WebSphere MQ的簡介與實作:

http://www.syscom.com.tw/ePaper_Content_EPArticledetail.aspx?id=122&EPID=166&j=3&HeaderName=%E7%A0%94%E7%99%BC%E6%96%B0%E8%A6%96%E7%95%8C

百度文档:
MQ 服务器配置与测试一例 http://wenku.baidu.com/view/a6e30117866fb84ae45c8d92.html

MQ安装和配置 http://wenku.baidu.com/view/d0f1a16a561252d380eb6e1d.html

 

(完)



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.