学习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、从资料上看到有个服务器传输通道,不知道是做什么用的?

学习MQ(三) 一个实例的更多相关文章

  1. tensorflow学习笔记三:实例数据下载与读取

    一.mnist数据 深度学习的入门实例,一般就是mnist手写数字分类识别,因此我们应该先下载这个数据集. tensorflow提供一个input_data.py文件,专门用于下载mnist数据,我们 ...

  2. rabbit mq的一个实例,异步功能

    简单的使用场景:消息队列的场景有:解耦,异步,削峰. 此例用的场景,异步 有时候会有请求消耗时间过长,不能老让用户等待返回结果,可以用消息队列来做异步实现,之前用过workmain等类似的异步,但不如 ...

  3. 逆向学习XXclient怎样仅仅执行一个实例

    个人觉得学习分两种, 一种是当面请教和直接从书本网络中的资料学习. 其二就是看着令你惊叹的作品-顿悟. 什么?顿悟不了?那我们就一起来逆向学习吧!差点忘了,我并不打算提供Demo,这并不重要,难道你打 ...

  4. 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)

    Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...

  5. JavaWeb学习之三层架构实例(三)

    引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...

  6. LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS

    LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163. ...

  7. Linux第三周学习总结——构造一个简单的Linux系统MenuOS

    第三周学习总结--构造一个简单的Linux系统MenuOS 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  8. [学习笔记]一个实例理解Lingo的灵敏性分析

    一个实例理解Lingo的灵敏性分析     线性规划问题的三个重要概念:    最优解就是反应取得最优值的决策变量所对应的向量.    最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非 ...

  9. ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心

    作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...

随机推荐

  1. Ubuntu 13.04设置root用户登录图形界面

    先切换到root用户, sudo su root 1.先设定一个root的密码, passwd root 2.备份一下lightgdm cp -p /etc/lightdm/lightdm.conf ...

  2. 使用Mediaplay类写一个播放器

    我们知道android本身播放视频的的能力是有限的..先来一个Demo 另附我的一个还未成熟的播放器,下载地址:http://www.eoemarket.com/soft/370334.html,正在 ...

  3. Framework启动过程浅析

    浅显的总结一下Framework启动大概过程 总体 Android底层是linux系统,因而在开机时仍然是运行天字第一号进程inti,读取init.rc来创建第一个Dalvik进程zygote,下面是 ...

  4. Java 8新特性探究(三)泛型的目标类型推断

    简单理解泛型 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.通俗点将就是"类型的变量".这种类型变量可以用在类.接口和方法 ...

  5. 2015年iOS开发工程师前景分析

    "互联网+"概念的提出催生了大量互联网企业,越来越多的传统行业需要与互联网更深地渗透与融合.而在这股互联网化的浪潮中,行业却发现找不到优秀的互联网人才. 互联网企业数量持续增长,用 ...

  6. C++ Primer 有感(重载操作符)

    1.用于内置类型的操作符,其含义不能改变.也不能为任何内置类型定义额外的新的操作符.(重载操作符必须具有至少一个类类型或枚举类型的操作数.这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含 ...

  7. PA 项目创建任务

    ---- 创建任务 DECLARE p_project_id NUMBER := 155233; p_task_number VARCHAR2(240) := 'CXYTEST0001'; p_tas ...

  8. Shell脚本的调试技术

    编程中必不可少的一点就是调试,Shell脚本以其强大的功能令人向往,当然,它的强大之处不只是体现在语言的实现功能上,更强大的是它的调试功能,下面,我将以实例讲解Shell脚本的调试技术. 下面是我所用 ...

  9. (NO.00001)iOS游戏SpeedBoy Lite成形记(五)

    在GameScene.m中添加matchRun的实现: -(void)matchRun{ CCLOG(@"%@ invoke!",NSStringFromSelector(_cmd ...

  10. AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)

    AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记) 前言 在"AngularJS项目开发技巧之图片预加载" ...