Check MQ queue depth

后端 未结 2 781
感动是毒
感动是毒 2020-12-19 21:00

Can anyone help in doing the code in java of getting the depth of the queues. We are having 4 queues in IBM WebSphere MQ and inside them there are messages.

I want t

2条回答
  •  遥遥无期
    2020-12-19 21:42

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

    I re-implemented this as follows:

    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);
        }
    }
    

    Put the following jars on your classpath:

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

提交回复
热议问题