1,MQ的相關命令
-
查看隊列管理器運行狀態
# 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); 重置通道序號。
-
三.查看通道監聽狀態與啟停監聽
$ 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需要寫入文件,去執行,替換相應的命令即可