我正在尝试编写一个连接到队列管理器的小应用程序,并在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);
Run Code Online (Sandbox Code Playgroud)
命令处理器期望接收可编程命令格式(PCF)格式的消息。请参阅com.ibm.mq.pcf类和可编程命令格式和管理界面手册。
根据您使用的 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
形式提供。