I am using Active MQ and the Java JMS.
I want to count the number of messages on the queue.
One approach is counting the messeages with a browser:
Queue queue = (Queue) session.createQueue(subject);
QueueBrowser queueBrowser = session.createBrowser(queue);
Enumeration<?> e = queueBrowser.getEnumeration();
int numMsgs = 0;
// count number of messages
while (e.hasMoreElements()) {
// Message m = (Message) e.nextElement();
e.nextElement();
numMsgs++;
}
But for a queue with 5000 pending requests, this only return 500.
Another approach is this (iterate all the messeages in the queue):
Message message= consumer.receive(500);
while(message!= null)
{
if (message instanceof TextMessage)
{
TextMessage textMessage = (TextMessage) message;
// BytesMessage Byte
System.out.println("Received message '"+ textMessage.getText() + "'");
}
if(message!=null)
Messages_list.add(message);
message = consumer.receive(1);
}
But this also dont give the right amount of messages pending.
How can i confidently iterate akk the messages waiting in the queue?
Imqadminthat's shipped with Glassfish often doesn't have up-to-date info about nr of messages, for example. - Miljen Mikic