You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写runmqsc MQ命令查询curdepth超过maxdepth 80%的队列

IBM MQ查询队列深度超过最大深度80%的runmqsc实现方案

注意:runmqsc原生WHERE过滤条件不支持两个属性间的算术比较运算,无法通过单条DISPLAY命令直接实现过滤,需要结合系统工具做二次处理。

Linux/Unix环境通用实现(兼容所有MQ版本)

直接运行如下命令,将YOUR_QMGR_NAME替换为实际的队列管理器名称即可:

runmqsc YOUR_QMGR_NAME << EOF | awk '/QUEUE\(/ {q=$0; gsub(/.*QUEUE\(|\).*/,"",q)} /CURDEPTH\(/ {c=$0; gsub(/.*CURDEPTH\(|\).*/,"",c)} /MAXDEPTH\(/ {m=$0; gsub(/.*MAXDEPTH\(|\).*/,"",m); if(m>0 && c/m > 0.8) print "队列:"q " 当前深度:"c " 最大深度:"m " 使用率:"int(c/m*100)"%"}'
DISPLAY QLOCAL(*) CURDEPTH MAXDEPTH
EOF

逻辑说明:先批量查询所有本地队列的当前深度、最大深度属性,通过awk提取对应字段,自动跳过最大深度为0的队列避免除零报错,最终输出使用率超过80%的队列信息。

MQ 9.2.0及以上版本简化实现(Linux/Unix环境)

高版本MQ支持JSON格式输出,可通过jq工具简化字段解析,命令稳定性更高:

runmqsc -f JSON YOUR_QMGR_NAME "DISPLAY QLOCAL(*) CURDEPTH MAXDEPTH" | jq -r '.parameters[] | select(.CURDEPTH / .MAXDEPTH > 0.8 and .MAXDEPTH > 0) | "队列:\(.QUEUE) 当前深度:\(.CURDEPTH) 最大深度:\(.MAXDEPTH) 使用率:\((.CURDEPTH/.MAXDEPTH*100|floor))%"'

Windows环境实现(Powershell)

将如下代码保存为.ps1脚本执行,替换YOUR_QMGR_NAME为实际队列管理器名称:

$output = runmqsc YOUR_QMGR_NAME "DISPLAY QLOCAL(*) CURDEPTH MAXDEPTH"
$queue = $null
$curdepth = $null
foreach ($line in $output) {
    if ($line -match 'QUEUE\((.*?)\)') {
        $queue = $matches[1]
    }
    if ($line -match 'CURDEPTH\((\d+)\)') {
        $curdepth = [int]$matches[1]
    }
    if ($line -match 'MAXDEPTH\((\d+)\)') {
        $maxdepth = [int]$matches[1]
        if ($maxdepth -gt 0 -and $curdepth / $maxdepth -gt 0.8) {
            Write-Host "队列:$queue 当前深度:$curdepth 最大深度:$maxdepth 使用率:$([math]::Round($curdepth/$maxdepth*100))%"
        }
    }
}

内容的提问来源于stack exchange,提问作者Afroz Md

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 14:48:00