谁能帮忙用 java 编写获取队列深度的代码。我们在 IBM WebSphere MQ 中有 4 个队列,其中有消息。
我想编写一个 jsp 来在运行报告时读取队列名称及其深度。 我该怎么做?
最佳答案
参见 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*jar
- j2ee.jar
关于java - 检查 MQ 队列深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8656245/