当前位置: 首页 > 面试题库 >

如何从Java获取连接到Websphere MQ队列的使用者数量

周马鲁
2023-03-14
问题内容

我想从Java获取特定Websphere MQ队列的使用者数量吗?在将消息放入队列之前,我需要知道是否有人要使用这些消息。


问题答案:

首先,值得注意的是,提出的设计是非常非常糟糕的设计。效果是将异步消息传递变回同步消息传递。这将消息生产者与消费者联系起来,引入位置和分辨率依赖性,破坏群集,破坏WMQ的负载分配和平衡,将网络拓扑嵌入到应用程序中,并使整个系统脆弱。请不要责怪WMQ有意破坏了其所有最佳功能(实际的队列/出队操作除外)后无法正常工作。

但是,要更直接地回答您的问题,请使用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上
不是连接消息发送者的队列上,则此方法将不起作用。当然,正常情况下,消息发送方和接收方将驻留在不同的QMgr上。但是,由于您没有过多提及该设计,因此,出于本回答的目的,我假设来自消息生产者和消费者的连接都附加到同一QMgr。如果不是这种情况,我们需要对PCF进行讨论,甚至对设计提出更强烈的警告。



 类似资料:
  • 我正在开发一个应用程序。我正在使用Activemq。有没有什么方法可以做到一个生产者总是向一个经纪人发送消息,但在另一边有3consumers.Each消费者监听经纪人,可以从queue.Is获取任何消息? 我正在使用 activemq 将我的应用程序日志写入数据库。如您所知,将日志写入数据库是一个耗时的过程。这就是为什么消费者比生产者越来越慢。例如。我发送100.000条消息(大对象)。制作者在

  • 我已经用RabbitMQ(3.7.6)设置了一个Laravel(5.6)应用程序,使用最新的Laradock和作曲家安装的https://github.com/vyuldashev/laravel-queue-rabbitmq。当我启动Laravel消息工作人员与我得到以下错误 但是,我可以使用telnet 127.0连接到Rabbit。0.1 5672(连接在不活动10秒后关闭)。听众似乎工作正

  • 从twilio文档和教程中,代理不知道有人在队列中,所以只有在队列中总是有人,而代理整天都坐在那里打外勤电话的情况下,这才有效。 目标: 当有人打来电话时,我想把电话接通代理。如果代理不可用,请将调用方添加到队列中。如果有第二或第三个人呼叫,则继续将其添加到队列中。当代理人打完第一个电话并挂断时,让下一个排队的人打电话,并实际拨打代理人的电话与代理人交谈。 我对twilio真的很陌生,所以这个Tw

  • 问题内容: 我正在尝试在运行时使用代理创建URL连接。我的代码如下: 但这是行不通的。有人知道为什么吗? 问题答案: 添加答案以帮助将来的访客

  • 问题内容: 我知道2D数组是数组的数组。要获得一行,您可以执行以下操作: 由于每行的大小可以不同,因此我假设它不是内置的,无法从2D数组中获取列。它使我相信您必须执行以下操作: 这样对吗?这是唯一的方法吗? 问题答案: 如果您被限制使用二维数组,那么可以,这就是afaik。但是,可能会帮助您的建议(如果可能): 将数组包装在处理列提取的类中。 祝好运。

  • 我无法连接到具有SEDA队列的骆驼路线。在服务器端,我有以下配置: 我正在尝试从这样的独立客户端访问此路由: 但我的制作人无法连接到seda队列。无法按我的路线排队。无法在我的bean属性中添加camelContext。我正在获取“bean类的属性'camelContext'无效”。如果我将正文发送到SEDA队列,则消息将发送到那里,但不会发送到路由的下一个元素