检查MQ队列深度

时间:2011-12-28 13:04:01

标签: java ibm-mq

任何人都可以帮助在java中获取获取队列深度的代码。我们在IBM WebSphere MQ中有4个队列,其中有消息。

我想在运行报告时编写一个jsp来读取队列名称及其深度。 我该怎么做?

2 个答案:

答案 0 :(得分:3)

请参阅http://blog.guymahieu.com/2008/06/11/getting-the-depth-of-an-mqseries-queue-from-java/

我重新实现了如下:

import com.ibm.mq.*;

public class QueueManager {

    private final String host;
    private final int port;
    private final String channel;
    private final String manager;
    private final MQQueueManager qmgr;

    public QueueManager(String host, int port, String channel, String manager) throws MQException {
        this.host = host;
        this.port = port;
        this.channel = channel;
        this.manager = manager;
        this.qmgr = createQueueManager();
    }

    public int depthOf(String queueName) throws MQException {
        MQQueue queue = qmgr.accessQueue(queueName, MQC.MQOO_INQUIRE | MQC.MQOO_INPUT_AS_Q_DEF, null, null, null);
        return queue.getCurrentDepth();
    }

    @SuppressWarnings("unchecked")
    private MQQueueManager createQueueManager() throws MQException {
        MQEnvironment.channel = channel;
        MQEnvironment.port = port;
        MQEnvironment.hostname = host;
        MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);
        return new MQQueueManager(manager);
    }
}

将以下jar放在类路径中:

  • com.ibm.mq *罐
  • 的j2ee.jar

答案 1 :(得分:0)

我看到了回复access queue with Websphere MQ API

您是否在JMX环境中查看MBean可访问文件?如果我不得不这样做,我会把它暴露在Mbean中。

你可以看到IBM JMS Topologies

  

为了监视和检查资源的状态,例如队列深度,有几个选项。首选方法是使用随Application Serve提供的JMX Mbeans进行监视:JMSBasicFunction,JMSAdministration和EmbeddedJMSAdministration。   您可以通过wsadmin或以编程方式访问这些Mbeans。其次,您可以使用传统的WMQ管理实用程序(如runmqsc或MQExplorer)来查看队列和其他资源。如果您确实使用这些实用程序,则必须不对Application Server队列管理器和队列进行任何配置更改。这些资源受Application Server的控制。使用MQ实用程序更改这些资源会导致配置不正常

不知道你是否在WAS服务器上,如果这仍然是相同的MBean,但你应该在你的AS上找到等效的Mbeans。