2

使用任何脚本检查队列深度(MQ)是否可行?[对语言没有限制]。该计划是研究非 Java 解决方案。

我确实了解使用 MQQueueManager 在 Java 中可以实现,但这需要使用客户端 API。因此检查任何替代选项或更好的做法。

http://www.capitalware.biz/mq_code_perl_python.html上的 InquireQueue看起来很相似[但看起来有点过时]

4

5 回答 5

1

没人再用谷歌了吗?

PyMQI,一个用于 WebSphere MQ 的开源 Python 扩展

http://metacpan.org/pod/MQSeries::队列

我的 %qattr = $queue->Inquire( qw(MaxMsgLength MaxQDepth) );

于 2012-08-20T15:48:57.983 回答
1

Google 没有给你我最近在http://www.capitalware.biz/rl_blog/?p=1616上写的一篇名为“如何从脚本或程序中清除 MQ 队列”的博客文章

只需将 MQSC“清除”命令更改为“当前深度”(CURDEPTH)。IE

DIS QL(TEST.*) CURDEPTH
于 2012-08-21T01:15:30.593 回答
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";
于 2014-12-17T21:28:04.790 回答
0

如果您在 linux 上使用 MQM 用户登录并希望快速检查其中包含消息的队列 .. 这是一个快速修复 ..

echo "dis ql(*) CURDEPTH" | runmqsc <QMGRNAME> | grep -v '(0' | grep -v 'AMQ'

这将为您提供命令行输出,如果需要,您可以直接在 crontab 中安排相同的命令(无需为其保存脚本)

我知道它并不整洁,但可能是最快的解决方案。

于 2017-01-10T15:49:01.387 回答
-3

有许多基于 JVM 的脚本/ish 语言可以让您访问 Java 类。有些需要薄胶层,有些根本不需要。

  • 时髦的
  • 杰通
  • 斯卡拉
  • Clojure
  • 等等
于 2012-08-20T15:52:15.147 回答