使用任何脚本检查队列深度(MQ)是否可行? [没有语言限制]。计划是查看非Java解决方案。
我确实理解使用MQQueueManager在Java中可以实现,但需要使用客户端API。因此,检查任何替代选项或更好的做法。
http://www.capitalware.biz/mq_code_perl_python.html处的InquireQueue看起来相似[但看起来有点过时]
答案 0 :(得分:1)
是否有人再使用谷歌?
PyMQI,WebSphere MQ的开源Python扩展
http://metacpan.org/pod/MQSeries::Queue
my%qattr = $ queue->查询(qw(MaxMsgLength MaxQDepth));
答案 1 :(得分:1)
Google没有在http://www.capitalware.biz/rl_blog/?p=1616
给你写一篇名为“如何从脚本或程序中清除MQ队列”的博客文章。只需将MQSC“clear”命令更改为“当前深度”(CURDEPTH)即可。 即。
DIS QL(TEST.*) CURDEPTH
答案 2 :(得分:1)
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";
答案 3 :(得分:0)
如果您使用Linux上的MQM用户登录并希望快速检查其中包含消息的队列..这里有一个quickfix ..
echo "dis ql(*) CURDEPTH" | runmqsc <QMGRNAME> | grep -v '(0' | grep -v 'AMQ'
这将为您提供命令行输出,如果需要,您可以在crontab中安排相同的命令(无需为其保存脚本)
我知道它不整洁,但可能是最快的解决方案。
答案 4 :(得分:-2)
有许多基于JVM的脚本/ ish语言可以让您访问Java类。有些需要薄胶层,有些则根本不需要。