【发布时间】:2020-06-09 04:45:08
【问题描述】:
在查询通道以获取有关连接到给定队列管理器的主机的信息时,我遇到了 PCF 消息代理的问题。 PCFAgent的代码是
MQGetMessageOptions getMessageOptions = new MQGetMessageOptions();
getMessageOptions.options = MQC.MQGMO_BROWSE_NEXT + MQC.MQGMO_NO_WAIT + MQC.MQGMO_FAIL_IF_QUIESCING;
messageAgent = new PCFMessageAgent(MQEnvironment.hostname, MQEnvironment.port, MQEnvironment.channel);
选项代码是
inquireOptions = new PCFMessage(CMQCFC.MQCMD_INQUIRE_CHANNEL_STATUS);
inquireOptions.addParameter(CMQCFC.MQCACH_CHANNEL_NAME, "*");
inquireOptions.addParameter(CMQCFC.MQIACH_CHANNEL_INSTANCE_TYPE, CMQC.MQOT_CURRENT_CHANNEL);
inquireOptions.addParameter(CMQCFC.MQIACH_CHANNEL_INSTANCE_ATTRS, new int[]{
CMQCFC.MQCACH_CHANNEL_NAME, CMQCFC.MQCACH_CONNECTION_NAME, CMQCFC.MQIACH_MSGS,
CMQCFC.MQCACH_LAST_MSG_DATE, CMQCFC.MQCACH_LAST_MSG_TIME, CMQCFC.MQIACH_CHANNEL_STATUS
});
responses = messageAgent.send(inquireOptions);
并非总是如此,但有时应用程序会返回“完成代码 2,原因 2100”的异常,并且我的主机(运行应用程序的主机)在服务器上留下一个挂起的连接,该连接在 MQManager 之前永远不会关闭已重新启动。
我了解到此异常是由于创建动态队列时发生冲突,但在我的代码中我没有创建任何队列。 有人可以帮助我吗?抱歉,我以前没有使用过队列管理器的经验。
谢谢
【问题讨论】:
标签: java ibm-mq ibm-integration-bus