美文网首页
IBM MQ简明教程——2. 将消息发送至远程队列

IBM MQ简明教程——2. 将消息发送至远程队列

作者: 改变_从现在开始 | 来源:发表于2019-04-16 15:52 被阅读0次

    一. 创建队列管理器

    1. 通过以下命令,创建名为QMGR_02_BANK的队列管理器
    crtmqm QMGR_02_BANK
    
    1. 通过输入以下命令来启动此队列管理器
    strmqm QMGR_02_BANK
    

    示例如下:

    $ crtmqm QMGR_02_BANK
    IBM MQ queue manager created.
    Directory '/var/mqm/qmgrs/QMGR_02_BANK' created.
    The queue manager is associated with installation 'Installation1'.
    Creating or replacing default objects for queue manager 'QMGR_02_BANK'.
    Default objects statistics : 83 created. 0 replaced. 0 failed.
    Completing setup.
    Setup completed.
    $ strmqm QMGR_02_BANK
    The system resource RLIMIT_NOFILE is set at an unusually low level for IBM MQ.
    IBM MQ queue manager 'QMGR_02_BANK' starting.
    The queue manager is associated with installation 'Installation1'.
    5 log records accessed on queue manager 'QMGR_02_BANK' during the log replay phase.
    Log replay for queue manager 'QMGR_02_BANK' complete.
    Transaction manager state recovered for queue manager 'QMGR_02_BANK'.
    IBM MQ queue manager 'QMGR_02_BANK' started using V9.1.1.0.
    $
    

    二. 创建本地队列

    1. 通过输入以下命令来启用 MQSC 命令
    runmqsc QMGR_02_BANK
    
    1. 通过输入以下命令来定义名为 QM_02_BANK 的本地队列(传输队列)
    define qlocal (Q_TRAN_02_BANK) usage (xmitq)
    

    此时会显示消息,告诉您已经创建了队列和缺省 IBM MQ 对象。

    qlocal:队列名称
    usage:队列用法,normal代表本地队列,xmitq代表传输队列

    1. 通过输入以下命令来定义远程队列定义
    define qremote (Q1) rname (Q1) rqmname(QMGR_01_BANK) xmitq (Q_TRAN_02_BANK)
    

    qremote:远程队列名称
    rname:接收队列的名称
    rqmname:接收队列所属的队列管理器名称
    xmitq:传输队列管理器名称
    注意:远程队列必须与接收队列名称完全一致,否则消息无法发送出去。

    示例如下:

    $ strmqm QMGR_02_BANK
    The system resource RLIMIT_NOFILE is set at an unusually low level for IBM MQ.
    IBM MQ queue manager 'QMGR_02_BANK' starting.
    The queue manager is associated with installation 'Installation1'.
    5 log records accessed on queue manager 'QMGR_02_BANK' during the log replay phase.
    Log replay for queue manager 'QMGR_02_BANK' complete.
    Transaction manager state recovered for queue manager 'QMGR_02_BANK'.
    IBM MQ queue manager 'QMGR_02_BANK' started using V9.1.1.0.
    $ runmqsc QMGR_02_BANK
    5724-H72 (C) Copyright IBM Corp. 1994, 2018.
    Starting MQSC for queue manager QMGR_02_BANK.
    
    
    define qlocal (Q_TRAN_02_BANK) usage (xmitq)
         1 : define qlocal (Q_TRAN_02_BANK) usage (xmitq)
    AMQ8006I: IBM MQ queue created.
    define qremote (Q1) rname (Q1) rqmname(QMGR_01_BANK) xmitq (Q_TRAN_02_BANK)
         2 : define qremote (Q1) rname (Q1) rqmname(QMGR_01_BANK) xmitq (Q_TRAN_02_BANK)
    AMQ8006I: IBM MQ queue created.
    end
         3 : end
    2 MQSC commands read.
    No commands have a syntax error.
    All valid MQSC commands were processed.
    $ 
    

    三、创建接收消息通道

    1. 在接收机器上打开命令提示符,然后按照以下步骤操作:
      通过输入以下命令来启动 MQSC:
    runmqsc QMGR_01_BANK
    
    1. 通过输入以下命令来定义接收通道
    define channel (CHL1) chltype (RCVR) trptype (TCP)
    

    channel:通道名称
    chltype:通道类型

    RCVR:接收
    SDR:发送

    trptype:传输类型协议

    1. 打开新的命令窗口并查看哪些端口空闲。输入下列命令:
    netstat -an
    

    这将显示正在运行的进程的列表。查看每个进程的端口号以了解端口 1414 是否正在使用中;您可以通过查看本地地址列来找到它。该信息采用 ip_address:port_being _used 格式提供。
    如果端口 1414 未使用,那么稍后在验证时使用 1414 作为侦听器和发送方通道的端口号。如果它在使用中,那么选择未使用的备用端口;例如,如果 1415 未被另一进程使用,那么选择该端口。

    1. 验证要求您启动缺省的 IBM MQ 侦听器。缺省情况下,该侦听器将侦听端口 1414。如果在步骤 中发现端口 1414 空闲,那么不需要执行任何操作即可继续执行步骤,如果必须使用除 1414 之外的端口,那么修改 SYSTEM.DEFAULT.LISTENER.TCP 的定义。例如,要使用端口 8088,请在 MQSC 窗口中输入下列命令:
    alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
    
    1. 在 MQSC 窗口中,通过输入以下命令来启动缺省 IBM MQ 侦听器
    start listener(system.default.listener.tcp)
    
    1. 通过输入以下命令来停止 MQSC:
    end
    

    将显示一些消息,然后会显示命令提示符。
    示例如下:

    $ runmqsc QMGR_01_BANK
    5724-H72 (C) Copyright IBM Corp. 1994, 2018.
    Starting MQSC for queue manager QMGR_01_BANK.
    
    
    define channel (CHL1) chltype (RCVR) trptype (TCP)
         1 : define channel (CHL1) chltype (RCVR) trptype (TCP)
    AMQ8014I: IBM MQ channel created.
    alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
         2 : alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
    AMQ8623I: IBM MQ listener changed.
    start listener(system.default.listener.tcp)
         3 : start listener(system.default.listener.tcp)
    AMQ8021I: Request to start IBM MQ listener accepted.
    end
         4 : end
    3 MQSC commands read.
    No commands have a syntax error.
    All valid MQSC commands were processed.
    $
    

    四、创建发送消息通道

    1. 在发送机器上打开命令提示符,然后按照以下步骤操作
      通过输入以下命令来启动 MQSC:
    runmqsc QMGR_02_BANK
    
    1. 通过输入以下命令来定义发送方通道
    define channel(CHL1) chltype(sdr) conname('127.0.0.1(8088)') xmitq(Q_TRAN_02_BANK) trptype(tcp)
    

    xmitq:传输队列名称
    con-name:接收方工作站的 TCP/IP 地址。值 port 是接收方机器上对其运行侦听器的端口,缺省值是 1414。
    注意:发送通道必须与接收通道名称相同,否则消息无法发送。

    1. 通过输入以下命令来启动通道
    start channel (CHL1)
    
    1. 通过输入以下命令来停止 MQSC
    end
    

    示例如下:

    $ runmqsc QMGR_02_BANK
    5724-H72 (C) Copyright IBM Corp. 1994, 2018.
    Starting MQSC for queue manager QMGR_02_BANK.
    
    
    define channel(CHL1) chltype(sdr) conname('127.0.0.1(8088)') xmitq(Q_TRAN_02_BANK) trptype(tcp)
         1 : define channel(CHL1) chltype(sdr) conname('127.0.0.1(8088)') xmitq(Q_TRAN_02_BANK) trptype(tcp)
    AMQ8014I: IBM MQ channel created.
    start channel (CHL1)
         2 : start channel (CHL1)
    AMQ8018I: Start IBM MQ channel accepted.
    end
         3 : end
    2 MQSC commands read.
    No commands have a syntax error.
    All valid MQSC commands were processed.
    $
    

    五、查看发送通道状态

    1. 在发送机器上打开命令提示符,然后按照以下步骤操作
      通过输入以下命令来启动 MQSC:
    runmqsc QMGR_02_BANK
    
    1. 通过输入以下命令查看发送通道状态
    dis chs(*)
    

    示例如下:

    $ runmqsc QMGR_02_BANK
    5724-H72 (C) Copyright IBM Corp. 1994, 2018.
    Starting MQSC for queue manager QMGR_02_BANK.
    
    
    dis chs(*)
         1 : dis chs(*)
    AMQ8417I: Display Channel Status details.
       CHANNEL(CHL1)                           CHLTYPE(SDR)
       CONNAME(127.0.0.1(8088))                CURRENT
       RQMNAME(QMGR_01_BANK)                   STATUS(RUNNING)
       SUBSTATE(MQGET)                         XMITQ(Q_TRAN_02_BANK)
    end
         2 : end
    One MQSC command read.
    No commands have a syntax error.
    All valid MQSC commands were processed.
    $
    

    六、查看接收通道状态

    1. 在发送机器上打开命令提示符,然后按照以下步骤操作
      通过输入以下命令来启动 MQSC:
    runmqsc QMGR_01_BANK
    
    1. 通过输入以下命令查看发送通道状态
    dis chs(*)
    

    示例如下:

    $ runmqsc QMGR_01_BANK
    5724-H72 (C) Copyright IBM Corp. 1994, 2018.
    Starting MQSC for queue manager QMGR_01_BANK.
    
    
    dis chs(*)
         1 : dis chs(*)
    AMQ8417I: Display Channel Status details.
       CHANNEL(CHL1)                           CHLTYPE(RCVR)
       CONNAME(127.0.0.1)                      CURRENT
       RQMNAME(QMGR_02_BANK)                   STATUS(RUNNING)
       SUBSTATE(RECEIVE)
    end
         2 : end
    One MQSC command read.
    No commands have a syntax error.
    All valid MQSC commands were processed.
    $
    

    七、 使用 amqsput 将测试消息放入远程队列

    1. 启动 amqsput 样本程序
      在 Linux 上,更改为 MQ_INSTALLATION_PATH/samp/bin 目录,其中 MQ_INSTALLATION_PATH 表示安装了 IBM MQ 的高级目录。输入以下命令:
    ./amqsput Q1 QMGR_02_BANK
    
    1. 在一行或多行上输入某些消息文本,然后按 Enter 键两次。 此时会显示以下消息:
      Sample AMQSPUT0 end
      示例如下:
    $ pwd
    /opt/mqm/samp/bin
    $ ./amqsput Q1 QMGR_02_BANK
    Sample AMQSPUT0 start
    target queue is Q1
    Hello World!
    ni hao ma!
    
    Sample AMQSPUT0 end
    $
    

    八、 验证是否已发送测试消息

    1. 启动 amqsget 样本程序
      在 Linux 上,更改为 MQ_INSTALLATION_PATH/samp/bin 目录,其中 MQ_INSTALLATION_PATH 表示安装了 IBM MQ 的高级目录。输入以下命令:
    ./amqsget Q1 QMGR_01_BANK
    

    结果
    此时会启动该样本程序,并显示您的消息以及此队列上的任何其他消息。在暂停 15 秒钟后,样本程序结束,并再次显示命令提示符。
    示例如下:

    $ pwd
    /opt/mqm/samp/bin
    $ ./amqsget Q1 QMGR_01_BANK
    Sample AMQSGET0 start
    message <Hello World!>
    message <ni hao ma!>
    no more messages
    Sample AMQSGET0 end
    $
    

    参考
    将消息发送至远程队列

    相关文章

      网友评论

          本文标题:IBM MQ简明教程——2. 将消息发送至远程队列

          本文链接:https://www.haomeiwen.com/subject/hbpcwqtx.html