zoukankan      html  css  js  c++  java
  • 学习MQ(三) 一个实例


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

  • 相关阅读:
    数据库基础知识复习-2013.09.24
    2013.9.24 答题
    使用单向循环链表实现约瑟夫问题
    C++关于数字逆序输出的两种思路,及字符串逆序输出
    题目要求:建立一个类Str,将一个正整数转换成相应的字符串,例如整数3456转换为字符串"3456".
    将博客搬至CSDN
    Android 下载模块分析(DownloadManager和DownloadProvider)
    linux shell基础语法
    Android过滤Logcat输出
    (Java 多线程系列)Java 线程池(Executor)
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247044.html
Copyright © 2011-2022 走看看