MQ通道配置

MQ通道配置

通道是用来连接两个队列管理器的; 在单个队列管理器内读写消息不需要建立通道;但在一个队列管理器中写入消息,而从另一个队列管理器中的队列取出消息,这就需要建立通道; 通道,对跨机和本机的队列管理器不做区分,对于两个队列管理器,不论是否分布在同一个机器上,配置方式都是一样的,所不同的就是ip的地址配置;

通道类型

通信双方的通道类型配对并不是可以随意排列组合的,共有六种。(详见《精通MQ》1.2.4 p24) Sender/Receiver 是所有连接中最简单、最常用的一种。Sender 是通道主动方,也是 消息发送方。 Requester/Server 也是常用的一种连接方式。Requester 是通道主动方,但通道连接 后,它作为消息接收方,,Server 是消息发送方。 Server/Receiver 与 Sender/Receiver 类似,Server 是消息的发送方,也是连接的主动 方。与 Sender 定义类似,Server 定义中必须指定 CONNAME 参数。

Sender/Receiver 通道是最常见的通道配置方式, Sender 作为通道的发送方也是通道连接的主动发起方,Receiver 作为通道的接收方也是通道连接的被动监听方。在 Receiver 端要配置并运行相应的监听器。

配置示例

以下以Sender/Receiver 作为示例: 在以下的配置脚本中,通道连接两个队列管理器 QM1 和 QM2。其中,QM1为 Sender, QM2 为 Receiver。在 QM1 上配置了远程队列 QR 和传输队列 QX,其中 QR 指向队列管理器 QM2 上的本地队列 QL,且 QR 与 QX 对应,即凡是要放入 QR 队列的消息,在加上传输消息头后直接放入 QX 中等待发送。QM1 上配置 Sender 通道需要指定对方的通信参数 (IP地址和端口),而这些参数必须与 QM2 上的监听器设置对应。Sender 通道与传输队列 QX 对应,表示凡是在 QX 中等待发送的消息最终都可以由该通道送出。双方通道必须同名。 在连接通道的时候,我们只需在 QM1 端启动通道 start channel (C)。

开始干活: 1.建立队列管理器 首先,我们在10.6.159.147 建立两个队列管理器QM1、QM2,然后运行起来;

/var/mqm/sh$crtmqm QM1/var/mqm/sh$crtmqm QM2/var/mqm/sh$strmqm QM1/var/mqm/sh$strmqm QM2

2.建立队列和通道 定义qm1的队列和通道创建脚本:

/var/mqm/sh$vi define_qm1.tst DEFINE QREMOTE (QR) RNAME (QL)RQMNAME (QM2) XMITQ (QX) REPLACEDEFINE QLOCAL (QX) USAGE (XMITQ) REPLACEDEFINE CHANNEL (C) CHLTYPE (SDR) TRPTYPE (TCP) CONNAME (‘127.0.0.1 (1416)’) XMITQ (QX) REPLACE

创建qm1的队列和通道:

/var/mqm/sh$runmqsc QM1 < define_qm1.tst > out

查看out文件,确认没有错误;

定义qm2的队列和通道创建脚本:

/var/mqm/sh$vi define_qm2.tst DEFINE QLOCAL (QL) REPLACE DEFINE CHANNEL (C) CHLTYPE (RCVR) TRPTYPE (TCP) REPLACE

创建qm2的队列和通道:

/var/mqm/sh$runmqsc QM2 < define_qm2.tst > out

查看out文件,确认没有错误;

3.在qm2运行监听器 在qm2上运行监听器,监听连接和发报请求;

/opt/mqm/bin$runmqlsr -m QM2 -t tcp -p 1416

(停止监听器的命令:endmqlsr -m QM2)

4.运行通道 qm2的监听器不启动时,qm1上运行通道是无法启动的,因为无法建立起连接;

/opt/mqm/bin$runmqchl -c C -m QM1

或者通过mqsc来运行通道:

runmqsc QM1start channel (C)

5.发送测试报文

/var/mqm/sh$amqsput QR QM1 hello from qm1

6.接收测试报文

/var/mqm/sh$amqsget QL QM2>hello from qm1

一次全部接受回来

7.不同的机器上 进一步,我们再另外一台机器上建立QM3队列管理器:

/var/mqm/sh$crtmqm QM3/var/mqm/sh$strmqm QM3队列的定义与qm2一样,创建:/var/mqm/sh$runmqsc QM3 < define_qm3.tst > out运行监听器:/opt/mqm/bin$runmqlsr -m QM3 -t tcp -p 1416

qm1上的队列需要修改下ip:

DEFINE QREMOTE (QR) RNAME (QL)RQMNAME (QM3) XMITQ (QX) REPLACEDEFINE QLOCAL (QX) USAGE (XMITQ) REPLACEDEFINE CHANNEL (C) CHLTYPE (SDR) TRPTYPE (TCP) CONNAME (‘10.6.159.211 (1416)’) XMITQ (QX) REPLACE

发送接收测试类似,没问题;

over; Posted by: 大CC | 12DEC,2013 博客:blog.me115.com 微博:新浪微博

刺是与生俱来的,上帝在赐予优越感同时捆-绑的附属品;

MQ通道配置

相关文章:

你感兴趣的文章:

标签云: