學習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、從資料上看到有個服務器傳輸通道,不知道是做什么用的?