使用任何脚本检查队列深度(MQ)是否可行?[对语言没有限制]。该计划是研究非 Java 解决方案。
我确实了解使用 MQQueueManager 在 Java 中可以实现,但这需要使用客户端 API。因此检查任何替代选项或更好的做法。
http://www.capitalware.biz/mq_code_perl_python.html上的 InquireQueue看起来很相似[但看起来有点过时]
没人再用谷歌了吗?
PyMQI,一个用于 WebSphere MQ 的开源 Python 扩展
http://metacpan.org/pod/MQSeries::队列
我的 %qattr = $queue->Inquire( qw(MaxMsgLength MaxQDepth) );
Google 没有给你我最近在http://www.capitalware.biz/rl_blog/?p=1616上写的一篇名为“如何从脚本或程序中清除 MQ 队列”的博客文章
只需将 MQSC“清除”命令更改为“当前深度”(CURDEPTH)。IE
DIS QL(TEST.*) CURDEPTH
perl mqseries 非常完整。下面是一些示例代码。(该示例的部分功劳可能归功于其他人,但它多年来一直在我的驱动器上浮动。)代码连接到命令行指定的队列管理器,如果未提供,它将连接到默认队列经理。然后它会查询传入的队列名称,特别是该队列的当前深度。这显示给用户。可以轻松修改此代码以显示其他队列属性。此外,MQINQ 可用于查询其他对象的属性,而不仅仅是队列。这里是子集示例代码:
use MQSeries;
my $quename = $ARGV[0];
my $quemgrname = $ARGV[1];
my $Hconn = MQCONN($qmgrname, $CompCode, $Reason);
print"MQCONN reason:$Reason\n";
my $ObjDesc = { ObjectType => MQOT_Q, ObjectName => $qname };
my $Options = MQOO_INQUIRE | MQOO_SET | MQOO_FAIL_IF_QUIESCING;
my $Hobj = MQOPEN($Hconn,$ObjDesc,$Options,$CompCode,$Reason);
print"MQOPEN reason:$Reason\n";
my $tst = MQINQ($Hconn,$Hobj,$CompCode,$Reason,MQIA_CURRENT_Q_DEPTH);
print"Depth of $qname is: $tst\n";
MQCLOSE($Hconn,$Hobj,$COptions,$CompCode,$Reason);
print"MQCLOSE reason:$Reason\n";
MQDISC($Hconn,$CompCode,$Reason);
print"MQDISC reason:$Reason\n";
如果您在 linux 上使用 MQM 用户登录并希望快速检查其中包含消息的队列 .. 这是一个快速修复 ..
echo "dis ql(*) CURDEPTH" | runmqsc <QMGRNAME> | grep -v '(0' | grep -v 'AMQ'
这将为您提供命令行输出,如果需要,您可以直接在 crontab 中安排相同的命令(无需为其保存脚本)
我知道它并不整洁,但可能是最快的解决方案。
有许多基于 JVM 的脚本/ish 语言可以让您访问 Java 类。有些需要薄胶层,有些根本不需要。