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需要寫入文件,去執行,替換相應的命令即可

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM