WebSphere MQ:如何使用Java API发出MQSC命令?

WebSphere MQ:如何使用Java API发出MQSC命令?,java,ibm-mq,Java,Ibm Mq,我正试图用Java编写一个连接到队列管理器并在其上发出一些命令的小应用程序 从我在文档中阅读的内容中,我了解到必须通过在“SYSTEM.ADMIN.COMMAND.QUEUE”队列中发送命令来发出命令 但是,replyToQueueName定义的应答队列在执行后仍然为空 我错过了什么吗 下面是代码的精简版本: MQQueueManager qMgr = new MQQueueManager("SOME_HOSTNAME"); MQQueue qOut = qMgr.accessQueue("S

我正试图用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);

命令处理器希望接收可编程命令格式(PCF)格式的消息。请参阅课程和手册

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

V7.0 MQ客户端可作为提供。
V7.5 MQ客户端的可用状态为。

V8.0 MQ客户机可以按以下方式提供

API是否已从版本6更改为版本7?我见过一些例子,比如这个例子,其中命令是作为简单的消息字符串发出的。对于最近的读者,请注意z/OS现在也支持PCF。从V6开始就已经这样做了。在z/OS上也不支持封装的MQSC命令(也称为Escape PCF)。当向z/OS发送MQSC命令时,它们没有被封装,它们只是直接放在队列中的字符串。感谢您的更正,@Morag。很高兴有你在这里!