从java代码获取队列深度
任何人都可以帮助用java编写获取队列深度的代码。IBM WebSphere MQ中有4个队列,其中包含消息 我想编写一个jsp,在运行报告时读取队列名称及其深度。我该怎么做?从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安装中
有人能帮我得到完整的解决方案吗?因为我不知道该怎么做。我不认为有办法使用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);
}