从java代码获取队列深度

从java代码获取队列深度,java,jms,ibm-mq,Java,Jms,Ibm Mq,任何人都可以帮助用java编写获取队列深度的代码。IBM WebSphere MQ中有4个队列,其中包含消息 我想编写一个jsp,在运行报告时读取队列名称及其深度。我该怎么做? 有人能帮我得到完整的解决方案吗?因为我不知道该怎么做。我不认为有办法使用JMS检索队列深度。但是,您可以使用MQ系列特定的Java API来检索此信息。下面是示例代码。注意int openOptions=MQC.MQOO\u INQUIRE 这是你的电话号码 如果您从IBM下载安装WMQ客户机(而不仅仅是从QMgr安装中

任何人都可以帮助用java编写获取队列深度的代码。IBM WebSphere MQ中有4个队列,其中包含消息

我想编写一个jsp,在运行报告时读取队列名称及其深度。我该怎么做?
有人能帮我得到完整的解决方案吗?因为我不知道该怎么做。我不认为有办法使用JMS检索队列深度。但是,您可以使用MQ系列特定的Java API来检索此信息。下面是示例代码。注意
int openOptions=MQC.MQOO\u INQUIRE

这是你的电话号码


如果您从IBM下载安装WMQ客户机(而不仅仅是从QMgr安装中获取类库),您将获得示例代码。在提供的示例中,有几个示例列出了队列名称、查询对象属性和创建对象。在Win 7上的默认安装中,可以在
C:\Program Files(x86)\IBM\WebSphere MQ\tools\pcf\samples
中找到这些文件

在此处下载WMQ客户端库:

  • WMQ v6.0 is(使用期限结束于2012年9月)
  • WMQV7.0是
  • WMQV7.1是
  • SupportPac登录页为

强烈建议您在任何新开发中使用最新的WMQ客户端。它将在目标QMgr提供的任何功能级别上适用于WMQ的所有早期版本。请参阅信息中心中的。您可以从中找到正在使用的WMQ版本的服务器或客户端的信息中心。

其中一些功能在IIB中被降级,因此我将粘贴更新的代码。有效:)

享受

从Java获取MQ队列深度:

try {
        int depth = 0;
        MQQueueManager qMgr; // define a queue manager object
        String mqHost = "";
        String mqPort = "";
        String mqChannel = "";
        String mqQMgr = "";
        String mqQueue = "";
        try {
            // Set up MQSeries environment
           MQEnvironment.hostname = mqHost;
           MQEnvironment.port = Integer.valueOf(mqPort).intValue();
           MQEnvironment.channel = mqChannel;
           //MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);
           qMgr = new MQQueueManager(mqQMgr);
           //int openOptions = 1;//MQC.MQOO_INQUIRE;



           int openOptions = CMQC.MQOO_INQUIRE + CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED;


           MQQueue destQueue = qMgr.accessQueue(mqQueue, openOptions);
           depth = destQueue.getCurrentDepth();
           destQueue.close();
           qMgr.disconnect();


            MbMessage outMessage = new MbMessage();
            outAssembly = new MbMessageAssembly(inAssembly, outMessage);
            MbElement root = outMessage.getRootElement();
            MbElement outXmlRoot =  root.createElementAsLastChild(MbXMLNSC.PARSER_NAME);
            MbElement Appointment = outXmlRoot.createElementAsLastChild(MbElement.TYPE_NAME, "RootElementXMLName", null);
            Appointment.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Q_DepthFromServer", depth);        
            out.propagate(outAssembly);    
        }

[同样的问题?][1][1]:谢谢Pangea。我是否必须配置队列配置并将代码保存为.java并运行它?还是我应该做些别的事情?@user1080320下载MQ Java api库,将其放入类路径并运行此代码。队列很可能允许查询访问,但有时我认为这可能在生产队列上被禁用,或者仅限于少数管理员用户。此外,如果这对您有帮助,请投票并接受答案。Pangea,您的主题非常有帮助,但是我可以从哪里获得MQ Java Api,它是什么?在哪个类路径?@user1080320遵循此文档并在其论坛上发布,以查找下载位置
try {
        int depth = 0;
        MQQueueManager qMgr; // define a queue manager object
        String mqHost = "";
        String mqPort = "";
        String mqChannel = "";
        String mqQMgr = "";
        String mqQueue = "";
        try {
            // Set up MQSeries environment
           MQEnvironment.hostname = mqHost;
           MQEnvironment.port = Integer.valueOf(mqPort).intValue();
           MQEnvironment.channel = mqChannel;
           //MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);
           qMgr = new MQQueueManager(mqQMgr);
           //int openOptions = 1;//MQC.MQOO_INQUIRE;



           int openOptions = CMQC.MQOO_INQUIRE + CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED;


           MQQueue destQueue = qMgr.accessQueue(mqQueue, openOptions);
           depth = destQueue.getCurrentDepth();
           destQueue.close();
           qMgr.disconnect();


            MbMessage outMessage = new MbMessage();
            outAssembly = new MbMessageAssembly(inAssembly, outMessage);
            MbElement root = outMessage.getRootElement();
            MbElement outXmlRoot =  root.createElementAsLastChild(MbXMLNSC.PARSER_NAME);
            MbElement Appointment = outXmlRoot.createElementAsLastChild(MbElement.TYPE_NAME, "RootElementXMLName", null);
            Appointment.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Q_DepthFromServer", depth);        
            out.propagate(outAssembly);    
        }