需要访问MQ 7的队列深度

我的下面是代码适用于MQ6,但对于MQ7,它给出了exception

'package javaapplication1; import java.io.*; import java.net.*; import java.util.*; import java.util.TimerTask; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQException; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; import com.ibm.mq.constants.CMQC; class Connectivity { public static void main(String args[]) throws MQException { String qManager=""; int port_num=0; int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED; MQEnvironment.hostname = "Host_name"; MQEnvironment.port = port_num; MQEnvironment.channel = "Chn_name"; System.out.println("Connecting to queue manager: " + qManager); Hashtable props = new Hashtable(); // Change the host name to your host name. Leave it as it is if // queue manager is on the same machine props.put(CMQC.HOST_NAME_PROPERTY, "Host_name"); props.put(CMQC.PORT_PROPERTY, port_num); props.put(CMQC.CHANNEL_PROPERTY, "Chn_Name"); MQQueueManager qMgr = new MQQueueManager(qManager, props); //MQQueueManager qMgr = new MQQueueManager("SW1_QM"); MQQueue destQueue = qMgr.accessQueue("Q_Name", openOptions); System.out.println("E_RETRY size:" + destQueue.getCurrentDepth()); destQueue.close(); qMgr.disconnect(); } }' 

我在线上得到例外

‘System.out.println(“E_RETRY size:”+ destQueue.getCurrentDepth());’

并且exception消息是

 'MQJE001: Completion Code 1, Reason 2068 Exception in thread "main" com.ibm.mq.MQException: MQJE001: Completion Code 1, Reason 2068 at com.ibm.mq.MQManagedObject.inquire(MQManagedObject.java:257) at com.ibm.mq.MQManagedObject.getInt(MQManagedObject.java:428) at com.ibm.mq.MQQueue.getCurrentDepth(MQQueue.java:1478) at javaapplication1.Connectivity.main(Connectivity.java:36) Java Result: 1' 

请帮助我..

您的打开选项不包括MQOO_INQUIRE ,这是获取队列深度的必要条件。 我期望MQRC 2038,因为未指定MQOO_INQUIRE选项。

不确定为什么还要初始化MQEnvironment,并且您正在将属性哈希表传递给MQQueueManager构造函数。

无论如何,这里是获取本地队列的队列深度的示例代码。

 public static void getQueueDepth() { String qManager="QM1"; int port_num=1414; int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED + CMQC.MQOO_INQUIRE; try { Hashtable props = new Hashtable(); props.put(CMQC.HOST_NAME_PROPERTY, "localhost"); props.put(CMQC.PORT_PROPERTY, port_num); props.put(CMQC.CHANNEL_PROPERTY, "SYSTEM.DEF.SVRCONN"); MQQueueManager qMgr = new MQQueueManager(qManager, props); MQQueue destQueue = qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE", openOptions); System.out.println("E_RETRY size:" + destQueue.getCurrentDepth()); destQueue.close(); qMgr.disconnect(); }catch(MQException mqe){ System.out.println(mqe); } } 

v6和v7队列管理器之间的队列属性是否可能不同? 错误消息的文档表明,这可能发生在解析为队列的远程实例的群集队列中。

您是否validation过destQueue实际上是一个有效的队列?