精品
消息發送涉及到的隊列及通道示意圖:
定義發送方為A,接收方為B,下面是建立A向B發送消息的單向配置。
發送方A的配置
1. 在發送方A創建隊列管理器QM_A:
[[email?protected] ~]$ crtmqm -q QM_A
成功后會有如下提示:
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Creating or replacing default objects for QM_A.
Default objects statistics : 40 created. 0 replaced. 0 failed.
Completing setup.
2. 啟動QM_A
[[email?protected] ~]$ strmqm -q QM_A
成功后會有如下提示:
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager QM_A starting.
5 log records accessed on queue manager QM_A during the log replay phase.
Log replay for queue manager QM_A complete.
Transaction manager state recovered for queue manager QM_A.
WebSphere MQ queue manager QM_A started.
3. 在發送方A創建A的本地隊列Q_A:
[[email?protected] ~]$ runmqsc QM_A //進入QM_A的控制臺
成功后會有如下提示:
5724-H72 (C) Copyright IBM Corp. 1994, 2005. ALL RIGHTS RESERVED.
Starting MQSC for queue manager QM_A.
然后在空白處開始輸入命令(下面創建隊列及通道均在控制臺中進行):
define ql(Q_A)
成功后有如下提示:
AMQ8006: WebSphere MQ queue created.
4. 在發送方A創建用于和B通信的傳輸隊列QT_B:
define ql(QT_B) usage(XMITQ)
成功后有如下提示:
AMQ8006: WebSphere MQ queue created.
5. 在發送方A創建映射接收方B的遠程隊列R_B:
define qr(R_B) rqmname(QM_B) rname(Q_B) xmitq(QT_B) Replace
// QM_B是B的隊列管理器名;Q_B是B的本地隊列名;QT_B是用于和B通信的傳輸隊列名。Replace為覆蓋原有配置
成功后有如下提示:
AMQ8006: WebSphere MQ queue created.
6. 在發送方A創建指向接收方B的發送通道CHL_B:
define chl(CHL_B) chltype(SDR) conname(10.10.1.2(1414)) xmitq(QT_B)
// CHL_B由B提供,是B的接收通道名;10.10.1.2和1414是B的ip和監聽端口;QT_B是用于和B通信的傳輸隊列名。
成功后有如下提示:
AMQ8014: WebSphere MQ channel created.
至此,由A向B單向發送的隊列及通道建立完畢, B需要建立本地隊列、傳輸隊列、接收通道、啟動監聽進程后可以接收消息(上面已進行過的操作略去,命名類似)。
發送方B的配置
7. 在接收方B創建接收通道CHL_B:
define channel(CHL_B) chltype(RCVR)
成功后有如下提示:
AMQ8014: WebSphere MQ channel created.
8. 在接收方B啟動監聽進程:
[[email?protected] ~]$ runmqlsr -t tcp -p 1414 -m QM_B &
// 為QM_B啟動端口為1414的監聽
成功后有如下提示:
[1] 12341
[[email?protected] ~]$ 5724-H72 (C) Copyright IBM Corp. 1994, 2005. ALL RIGHTS RESERVED.
可以使用nestat –an,在Active Internet connections (servers and established) 的local address中查看到該端口的使用。
至此,發送方A和接收方B的配置工作已完成。
發送測試消息
下面是在發送方A發送測試消息:
9. [[email?protected] ~]$ runmqchl -c CHL_B -m QM_A & //啟動QM_A的發送通道CHL_B
成功后有如下提示:
Channel CHL_B is starting.
進入/opt/mqm/samp/bin,
[[email?protected] bin]$ ./amqsput R_B QM_A
// R_B是映射接收方B的遠程隊列,QM_A為A的隊列管理器
成功后出現如下提示:
Sample AMQSPUT0 start
target queue is R_B
這時在下面的空白處輸入內容并回車,內容就由A發送至B
下面是接收方B接收測試消息:
[[email?protected] bin]$ ./amqsget Q_B QM_B
//Q_B是接收方B的本地隊列,QM_B為B的隊列管理器
其他配置
1.用windows下的MQ管理器對linux下的MQ進行管理:
DEFINECHL(SYSTEM.ADMIN.SVRCONN)CHLTYPE(SVRCONN)TRPTYPE(TCP)MCAUSER(mqm)
DEFINEQM(SYSTEM.MQEXPLORER.REPLY.MODEL)DEFTYPE(TEMPDYN)
2.需要建立服務器連接通道提供給應用服務使用:
DEFINE CHANNEL(CONNNAME) CHLTYPE(SVRCONN)
3.為傳輸隊列加上觸發器,在有消息要發送時觸發啟動發送通道:
alter ql(Q_TRANSFER) TRIGDATA(CHL_SEND) TRIGTYPE(FIRST) TRIGGER initq(SYSTEM.CHANNEL.INITQ)
感謝下載!
歡迎您的下載,資料僅供參考
感謝下載載
展開閱讀全文