转自:http://www.cnblogs.com/me115/p/3471788.html

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) REPLACE
DEFINE QLOCAL (QX) USAGE (XMITQ) REPLACE
DEFINE 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 QM1
start 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) REPLACE
DEFINE QLOCAL (QX) USAGE (XMITQ) REPLACE
DEFINE CHANNEL (C) CHLTYPE (SDR) TRPTYPE (TCP) CONNAME ('10.6.159.211 (1416)') XMITQ (QX) REPLACE

MQ通道配置的更多相关文章

  1. IBM WebSphere MQ 通道类型配置

    IBM WebSphere MQ 通道类型配置 初学MQ,四种常见通道,windows下操作 目录 Sender--Receiver Server-Receiver Server-Requester ...

  2. MQ安装配置

        (1)执行接受许可脚本: ./mqlicense.sh –accept  (2) 安装 WebSphere MQ for Linux 服务器: [root@localhost mq]# rpm ...

  3. EasyNVR无插件直播服务器软件使用详情功能-通道配置Excel

    背景需求 使用EasyNVR的用户都有知道,由于EasyNVR是将设备与EasyNVR的通道进行绑定的,因此EasyNVR是通过手动的通道配置来进行设备接入的,这样可以做到将设备的和通道对应的接入.但 ...

  4. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案使用详情功能-通道配置Excel导入导出

    使用EasyNVR的用户都有知道,由于EasyNVR是将设备与EasyNVR的通道进行绑定的,因此EasyNVR是通过手动的通道配置来进行设备接入的,这样可以做到将设备的和通道对应的接入.但是,如果手 ...

  5. Cisco基础(一):Vlan的划分、配置trunk中继链路、以太通道配置、DHCP服务配置

    一.Vlan的划分 目标: VLAN(虚拟局域网)是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置限制而根据用户需求进行网络分段.一个VLAN可以在 一个交换机或者跨交换机实现 ...

  6. 如何在SimpleNVR用Excel表格将通道配置简单化

    进入本世纪的第三个十年,流媒体们"绞尽脑汁",依靠技术不断提升用户的体验感.熟悉SimpleNVR的用户都知道,目前SimpleNVR已实现对接自有流媒体服务器平台,不限制观看人数 ...

  7. MQ通道搭建以及连通性检查

    场景:项目开发中使用的mq中间件一直不太熟悉,遇到问题就需要问人,公司的同事也不怎么爱搭理,弄的好受伤!不熟悉的时候只是感觉好难,逼的没办法,好好研究下,发现里面的过程也没想象中的难, 经过一番研究, ...

  8. 项目实战:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出exel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)

    需求   1.通道使能.选择.更改通道名称.设置显示颜色  2.采样率可设置(Sa/s/chj)  3.单位换算,按照给定的进行换算  4.对通道可进行设置补偿值  5.通道取消可动态显示和隐藏,并可 ...

  9. m.Tomcat使用openssl走APR通道配置单向和双向认证

    引用自: http://blog.csdn.net/gtuu0123/article/details/5827800(Tomcat的SSL单向认证)  http://blog.csdn.net/gtu ...

随机推荐

  1. javascript 学习之自定义滚动条加滚轮事件

    要自己写一个自定义滚动条加上滚轮事件,之前的没有滚轮事件不完整,今天整理了一个. 1.滚轮事件是不兼容的,firefox中是必需要用事件绑定的添加,用的DOMMouseScroll,当滚动鼠标的时候, ...

  2. Oracle Function

    Oracle Sql 中常用函数 小写字母转大写字母:upper(); 大写字母转小写字母:lower(); 字符串截取函数:substr(str,a,b); a,b为整数,str为字符串, 截取字符 ...

  3. C++STL -- vector实现

    STL的vector简化实现 本质 vector说到底就是一个动态数组,我们需要做的就是管理动态数组的内存,和元素的增加,删除,移动等. template <typename T> cla ...

  4. java类,接口浅谈

    一般类,抽象类,接口的使用场景: 类;共同的特征和行为的抽取和封装 接口:标准,规范(功能的扩展)         需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口   内部类: ...

  5. sleep thread process

    $str = 'w0'; for($w=0;$w<999999;$w++){ $sql = 'INSERT INTO w1 (wint,wchar) VALUES ('.$w.',"' ...

  6. angular $scope对象

    $scope是一个pojo对象 $scope提供了一些工具方法.例如:$watch() $apply(),一般不会手工去调用 $scope是表达式的执行环境也叫作用域 $scope是一个树形结构,与D ...

  7. CSS基础1

    CSS是层叠样式表(Cascading Style Sheets)的缩写,它有以下优点:①提高页面浏览速度:②缩短改版时间,降低维护费用:③更好的控制页面布局:④实现表现和结构.内容相分离:⑤更方便搜 ...

  8. 静态工厂方法VS构造器

    我之前已经介绍过关于构建者模式(Builder Pattern)的一些内容,它是一种很有用的模式用于实例化包含几个属性(可选的)的类,带来的好处是更容易读.写及维护客户端代码.今天,我将继续介绍对象创 ...

  9. php 登录注册api接口代码

    /** *一览(www.yl1001.com) * PHP开发API接口 服务端 */ require 'conn.php'; //连接数据库的文件 header('Content-Type:text ...

  10. DEDE有无缩略图如何调取

    同一样式分开调取 [field:array runphp='yes']@me = (strpos(@me['litpic'],'defaultpic') ? "":"&l ...