对 IBM MQ 系列队列中每个优先级的项目进行计数

Posted

技术标签:

【中文标题】对 IBM MQ 系列队列中每个优先级的项目进行计数【英文标题】:Counting items of each priority level in an IBM MQ Series Queue 【发布时间】:2008-10-07 10:27:16 【问题描述】:

我有一个 IBM WebSphere MQ 队列(在 Windows 上运行),其中包含许多不同优先级的项目。

我目前使用mqQueue.CurrentDepth 获得总深度计数,但我想获得队列中每个优先级的项目数。

知道如何实现这一目标吗?

【问题讨论】:

【参考方案1】:

您可以使用 JMS QueueBrowser 浏览队列中的消息并为每个优先级建立总数。

QueueBrowser browser = session.createBrowser(someQueue);
for (Enumeration iter = browser.getEnumeration(); iter.hasMoreElements()) 
  Message message = (Message) iter.nextElement();
  int priority = message.getJMSPriority();
  // update counters...

【讨论】:

请记住,所获得的数字只是近似值。在计算消息所需的时间内,队列的内容可能发生了很大变化。较高优先级消息的计数往往比较低优先级消息的错误率更大。入队/出队率也会影响计数的可靠性,错误率随着活动的增加而增加。所以这段代码完成了工作,但从表面上看,潜在的需求是有问题的。

以上是关于对 IBM MQ 系列队列中每个优先级的项目进行计数的主要内容,如果未能解决你的问题,请参考以下文章

IBM WebSphere MQ请求/回复方案

IBM WebSphere MQ 请求/回复场景

IBM WebSphere MQ介绍安装以及配置服务详解

POSIX消息队列 - mq_send线程唤醒命令

IBM MQ通道

IBM MQ通道