学习MQ(三) 一个实例。
现在有两台机器A和B,分别安装了MQ6.0,我要通过MQ进行A和B之间的双向通信。
我打算分两步,第一步:实现A到B的数据传输。
在A上:
1、创建队列管理器 QM_1001。
2、创建本地队列 LQ_1001
3、创建传输队列 XQ_1001
4、创建远程队列 RQ_1002
5、创建发送方通道 1001.1002
在B上:
1、创建队列管理器 QM_1002
2、创建本地队列 LQ_1002
3、创建接收方通道 1001.1002,名字必须与发送方通道相同。
4、创建侦听器,监听1414端口
这样,A到B的数据传输就可以了。
启动队列管理器QM_1001和QM_1002,启动B上的侦听器,A上启动发送方通道1001.1002,B上的接收方通道也会自动运行;
第二步:实现B到A的数据传输
在B上:
1、创建传输队列 XQ_1002
2、创建远程队列 RQ_1001
3、创建发送方通道 1002.1001
在A上:
1、创建接收方通道1002.1001
2、创建侦听器,侦听1414端口
启动A上的侦听器,启动B上的发送方通道1002.1001,这样A上的接收方通道会自动运行。
这样,由B到A的数据传输也能进行了。
这是我搞定的第一个例子,也是我学习MQ以来感觉有进步的一次。
下面是脚本。
在A上:
* 定义队列管理器
crtmqm -t 5000 -h 1000 -lc -lf 10240 -lp 30 -ls 32 -q QM_1001
*更改QM的字符集编码(CCSID)
ALTER QMGR FORCE CCSID(1381)
* 定义本地队列
DEFINE QLOCAL('LQ_1001') REPLACE +
USAGE(normal) +
DEFPSIST(YES)
* 定义传输队列
DEFINE QLOCAL('XQ_1001') REPLACE +
USAGE(XMITQ) +
DEFPSIST(YES) +
TRIGGER +
TRIGTYPE(FIRST) +
INITQ('SYSTEM.CHANNEL.INITQ') +
PROCESS('') +
TRIGDATA('1001.1002')
* 定义远程队列
DEFINE QREMOTE('RQ_1002') +
DEFPSIST(YES) +
RNAME('LQ_1002') +
RQMNAME('QM_1002') +
XMITQ('XQ_1001')
* 定义发送方通道
DEFINE CHANNEL('1001.1002') +
CHLTYPE(SDR) +
TRPTYPE(TCP) +
CONNAME('192.168.110.35(1414)') +
XMITQ('XQ_1001') +
DISCINT(0) +
SHORTTMR(30) +
SHORTRTY(999999999) +
LONGTMR(1200) +
LONGRTY(999999999)
* 定义接收方通道
DEFINE CHANNEL('1002.1001') +
CHLTYPE(RCVR) +
TRPTYPE(TCP)
* 启动队列管理器
strmqm QM_1001
* 启动侦听器
runmqlsr -m QM_1001 -t TCP -p 1414 &
在B上:
* 定义队列管理器
crtmqm -t 5000 -h 1000 -lc -lf 10240 -lp 30 -ls 32 -q QM_1002
*更改QM的字符集编码(CCSID)
ALTER QMGR FORCE CCSID(1381)
* 定义本地队列
DEFINE QLOCAL('LQ_1002') REPLACE +
USAGE(normal) +
DEFPSIST(YES)
* 定义传输队列
DEFINE QLOCAL('XQ_1002') REPLACE +
USAGE(XMITQ) +
DEFPSIST(YES) +
TRIGGER +
TRIGTYPE(FIRST) +
INITQ('SYSTEM.CHANNEL.INITQ') +
PROCESS('') +
TRIGDATA('1002.1001')
* 定义远程队列
DEFINE QREMOTE('RQ_1001') +
DEFPSIST(YES) +
RNAME('LQ_1001') +
RQMNAME('QM_1001') +
XMITQ('XQ_1002')
* 定义发送方通道
DEFINE CHANNEL('1002.1001') +
CHLTYPE(SDR) +
TRPTYPE(TCP) +
CONNAME('192.168.110.21(1414)') +
XMITQ('XQ_1002') +
DISCINT(0) +
SHORTTMR(30) +
SHORTRTY(999999999) +
LONGTMR(1200) +
LONGRTY(999999999)
* 定义接收方通道
DEFINE CHANNEL('1001.1002') +
CHLTYPE(RCVR) +
TRPTYPE(TCP)
* 启动队列管理器
strmqm QM_1002
* 启动侦听器
runmqlsr -m QM_1002 -t TCP -p 1414 &
剩下几个疑问没有明白
1、更改QM的字符集编码是做什么用的?
2、从资料上看到有个服务器传输通道,不知道是做什么用的?