MQ 相关命令,及自动化脚本的编写

1,MQ的相关命令  

  1. 查看队列管理器运行状态

    # dspmq

    显示结果中QMNAME表示MQ队列管理器的名称,STATUS表示当前运行状态。

    运行状态有如下几种:

            Starting    正在启动

            Running    正在运行

            Ending    正在停止

            Ended normally  已经正常终止

            Ended immediately  已经立即终止

            Ended preemtively  已经强制终止

            Ended unexpectively 异常终止

            注:停止MQ后建议使用dspmq命令进行状态检查是否成功关闭。

     

    二.查看通道运行状态与启停通道

    $ runmqsc QmgrName

    dis chl(*);     查看所有通道定义

    dis chs(*);     查看所有通道状态,如果没有查询到通道状态,或报错AMQ8420: Channel Status not found,请启动通道

    dis chs(ChannelName);  查看通道ChannelName的状态

    通道状态有如下几种:

            STARTING  正在启动

            BINDING    正在绑定

            INITIALIZING  正在初始化

            RUNNING   正常

            STOPPING 正在停止

            RETRYING  重试

            PAUSED  等待

            STOPPED 已停止

            REQUESTING  请求

    启停通道与重置通道序号的方法:

    $ runmqsc QmgrName

    start chl(ChannelName);  启动通道

    stop chl(ChannelName);  停止通道

    reset channel(ChannelName);  重置通道序号。

  2. 三.查看通道监听状态与启停监听

    $ runmqsc QmgrName

    dis listener(*);     查看通道监听定义

    dis lsstatus(listnerName);   查看监听状态

    启动与停止监听的方法:

    $ runmqsc

    start lstr(listnerName);   启动监听

    stop lstr(listnerName);   停止监听 

     

    四.查看队列深度

    如果队列深度不断增加,不见减少,那么可能就有问题了,请检查并分析其原因。

    $runmqsc QmgrName

    dis q(*);    查看所有各类队列的属性

    dis qlocal(QName);   查看所有本地队列的属性

    队列深度属性为:CURDEPTH

     

    五.查看死信队列深度

    如果死信队列深度不断增加,那就需要分析其原因。

    $runmqsc QmgrName

    dis qlocal(DEADQName)

 

2、相应的脚本

  Linux:

out = run_cmd('su - {} -c "{}<<EOF\nDISPLAY QUEUE(\'{}\') IPPROCS;\nEND\nEOF"'.format(os_mq_user, cmd,name))[1]
# 执行命令的查询方式,替换相应的命令可以获取你想要查询的结果

su - mqm -c "/opt/mqm/bin/runmqsc QMSZCNbak<<EOF
start channel('QT_SZ_Hzcn_bak');
END
EOF"

  Windows:

if 'Windows' in platform.system():
        with open('channelnum.in', 'w') as f:
            f.write('dis queue(\'{}\') CURDEPTH;\nEND'.format(name))
        cmd = 'runmqsc {}< "channelnum.in" > "channelnum.out"'.format(qname)
        #print cmd
        run_cmd(cmd)[1]
        with open("channelnum.out", 'r') as f:
            out = ''.join(f.readlines())
#Windows需要写入文件,去执行,替换相应的命令即可

  

posted @ 2020-03-20 14:14  QQmini  阅读(1230)  评论(0编辑  收藏  举报