我已通过Windows上的MQ Explorer远程连接到QMgr。 MQ服务器版本为7.5.0.1。我可以成功地从MQ Explorer中将消息放入AutoLayout
,当我转储SYSTEM.ADMIN.COMMAND.EVENT
时,我可以看到我的消息。只要我知道,我应该能够通过这个通道运行PCF命令和MQSC命令。所以,我将SYSTEM.ADMIN.COMMAND.EVENT
消息放入此队列中,我可以在MQ Server上成功查看此消息。我的问题是如何通过此频道远程运行此消息?感谢。
IBM Doc表明我应该能够在DISPLAY QMGR ALL
中收到命令结果。但我无法从客户端MQ资源管理器中浏览此队列。此队列的队列类型为SYSTEM.MQSC.REPLY.QUEUE
。
答案 0 :(得分:5)
这里有几个问题。
首先,您使用的是错误的队列。命令服务器侦听SYSTEM.ADMIN.COMMAND.QUEUE
。您要向其发送消息的队列SYSTEM.ADMIN.COMMAND.EVENT
是QMgr在执行命令后将事件消息放入的队列,当然,前提是已启用命令事件。
正如Jason所提到的,第二个问题是runmqsc
处理器采用人类可读的脚本并将其转换为QMgr可以理解的命令。将文本命令直接传递给命令服务器将不起作用。
通常我们会将命令直接传递给runmqsc,例如......
echo DISPLAY QMGR ALL | runmqsc MYQMGRNAME
如果您需要能够以客户端身份执行此操作,则需要下载SupportPac MO72,或者转到MQ Gem并获取MQSCX的副本。其中任何一个都将在本地队列管理器上接受上述命令,并且两者都可以提供MQ Channel参数并连接到远程QMgr。
除了这个基本功能外,MQSCX产品还有自己的内部脚本解析和执行。例如,假设您要根据QMgr的命令级别执行某些操作。
使用runmqsc
您可以发出上述命令,通过grep
,awk
或类似方法过滤生成的2列输出,然后将最终输出捕获到变量中。您可能需要多次执行此操作以捕获多个值,每次调用一个新的runmqsc
并解析脚本中的输出。然后,您必须为启动所有这些操作时要运行的实际命令生成字符串,并将其传递给另一个runmqsc
调用。
或者,MQSCX允许您发出DISPLAY
命令,然后直接按名称引用结果值。例如,您可以向MQSCX传递几行脚本,告诉它查询QMgr,然后根据命令版本执行条件操作,所有这些都不必回退到shell,bat或Perl脚本。
完全披露,我不为MQ Gem工作或从MQ Gem获得佣金。我只是不喜欢在墙上写下100行代码,其中2行代码。如果您执行任何数量的MQSC脚本,MQSCX上的ROI将在几分钟内完成。作为这个问题的答案,它恰好是100%的主题。
答案 1 :(得分:3)
命令服务器不处理文本消息,它处理PCF消息。您需要以PCF格式构建消息,并且可以对其进行处理。见http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.adm.doc/q019980_.htm
理想情况下,您会使用真正的PCF格式,但有一种PCF格式可以发送MQSC命令('转发'PCF - 请参阅此处http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.ref.adm.doc/q087230_.htm?lang=en)