我试图在不使用任何 API(如 Hermes 或 GEMS)的情况下监控队列,即我想使用纯 JAVA。所以为了浏览队列,即检查消息是否已到达队列,而不实际使用我在下面的代码中编写的消息:
javax.jms.QueueBrowser browser = session.createBrowser(queue);
Enumeration msgs = browser.getEnumeration();
int Count=0;
while(msgs.hasMoreElements())
{
message = (javax.jms.Message)msgs.nextElement();
System.out.println("Message"+message);
Count++;
}
但是,当我在队列上发布消息时,它不会显示结果。我已经验证消息正在到达队列并且接收者正在使用相同的消息。因此,由于这种方法不起作用,我想使用一种不同的方法,即计算队列前后收到的 numberOfMessages 数。所以我使用了下面的代码
QueueInfo q= new QueueInfo(queueName);
long l=q.getInTransitMessageCount();
System.out.println("In transit Mesasge Count="+l+"\n");
但这也行不通。任何解决此问题的建议或解释将不胜感激。请注意,代码中没有编译错误,并且所有必要的类都已导入。