精品
消息发送涉及到的队列及通道示意图:
定义发送方为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)
感谢下载!
欢迎您的下载,资料仅供参考
感谢下载载
展开阅读全文