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

  • 相关阅读:
    iOS 8以后 定位手动授权问题
    IOS int NSInteger NSNumber区分
    Java基础知识(JAVA集合框架之List与Set)
    Java基础知识(JAVA基本数据类型包装类)
    Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
    Java基础知识(重载和覆盖)
    Java基础知识(抽象类和接口)
    host文件
    天猫页面显示错位
    专题8:javascript函数详解
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247044.html
Copyright © 2020-2023  润新知