我试图从Java获取特定Websphere MQ队列的使用者数量?在将消息放入队列之前,我需要知道是否有人会使用这些消息。
发布于 2014-05-07 20:53:34
首先,值得注意的是,提出的设计是一个非常非常糟糕的设计。其效果是将异步消息返回到同步消息传递。这将消息生产者与使用者耦合,引入位置和解析依赖关系,破坏集群,破坏WMQ的负载分配和平衡,将网络拓扑嵌入应用程序,并使整个系统变得脆弱。除了实际的队列/脱队列操作之外,请不要指责WMQ在故意破坏了其所有最好的功能之后没有正确地工作。
但是,要更直接地回答您的问题,请使用queue对象的getOpenInputCount
方法来获取打开的输入句柄的数量。下面是操作步骤:
MQQueue outQ = qMgr.accessQueue(qName,
openOptions,
null, // default q manager
null, // no dynamic q name
null); // no alternate user id
int inCount = outQ.getOpenInputCount();
注意,您只能查询本地队列上的输入句柄。如果队列驻留在连接消息发送者的QMgr上,则此方法将无法工作。当然,正常情况下,消息发送方和接收方将驻留在不同的QMgrs上。但是,由于您没有提到太多关于设计的内容,因此就这个答案而言,我假设来自消息生产者和使用者的连接附加到同一个QMgr。如果不是这样的话,我们需要对PCF进行讨论,并对设计提出更强烈的警告。
https://stackoverflow.com/questions/23523259
复制相似问题