【问题标题】:WebSphere MQ: How to issue MQSC Commands using the Java API?WebSphere MQ:如何使用 Java API 发出 MQSC 命令?
【发布时间】:2011-09-28 19:36:15
【问题描述】:

我正在尝试用 Java 编写一个连接到队列管理器并在其上发出一些命令的小型应用程序。

根据我在文档中阅读的内容,我了解到必须通过在“SYSTEM.ADMIN.COMMAND.QUEUE”队列中发送命令来发出命令。

但是replyToQueueName定义的回复队列在执行后还是空的。

我错过了什么吗?

这是代码的精简版:

MQQueueManager qMgr = new MQQueueManager("SOME_HOSTNAME");

MQQueue qOut = qMgr.accessQueue("SYSTEM.ADMIN.COMMAND.QUEUE", MQC.MQOO_OUTPUT);
MQQueue qIn = qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE", MQC.MQOO_INPUT_AS_Q_DEF);

MQMessage message = new MQMessage();
message.writeUTF("DISPLAY QMGR ALL");
message.messageType = MQC.MQMT_REQUEST;
message.format = MQC.MQFMT_STRING;
message.replyToQueueName = "SYSTEM.DEFAULT.LOCAL.QUEUE";

qOut.put(message, new MQPutMessageOptions());

MQMessage retrievedMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = MQC.MQGMO_WAIT | MQC.MQGMO_CONVERT;

qIn.get(retrievedMessage, gmo);

【问题讨论】:

    标签: java ibm-mq


    【解决方案1】:

    命令处理器期望以可编程命令格式 (PCF) 格式接收消息。请参阅com.ibm.mq.pcf 类和Programmable Command Formats and Administration Interface 手册。

    根据您使用的 MQ 客户端版本,您可能需要从SupportPac MS0B 下载 PCF Java 类。但是,强烈建议使用最新的 MQ 客户端进行开发。当前客户端将始终与早期的 WMQ 服务器版本 V7 一起使用,并回退到这些平台上可用的功能级别。这可确保至少支持您的客户端类,而旧版本(如 V5.3 或 V6)则不支持。

    V7.0 MQ 客户端以SupportPac MQC7 的形式提供。
    V7.5 MQ 客户端以SupportPac MQC75 的形式提供。
    V8.0 MQ 客户端以SupportPac MQC80 的形式提供。

    【讨论】:

    • API 是否从版本 6 更改为版本 7?我见过一些例子,比如mqseries.net/phpBB2/viewtopic.php?t=15159,其中命令是作为简单的消息字符串发出的。
    • 对于最近的读者,请注意 z/OS 现在也支持 PCF。自 V6 以来已完成。 z/OS 也不支持并且从不支持封装的 MQSC 命令(也称为 Escape PCF)。当向 z/OS 发送 MQSC 命令时,它们没有被封装,它们只是直接放在队列中的字符串。
    • 感谢您的更正,@Morag。很高兴有你在这里!
    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 2013-01-03
    • 2011-02-10
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多