I am using Active MQ and Java JMS.
I want to count the number of messages in the queue.
One approach is counting messages with a browser:
Queue queue = (Queue) session.createQueue(subject); QueueBrowser queueBrowser = session.createBrowser(queue); Enumeration<?> e = queueBrowser.getEnumeration(); int numMsgs = 0;
But for a queue with 5000 pending requests, this returns only 500.
Another approach is this (repeat all the clutter 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 it also does not give the correct number of pending messages.
How can I confidently loop through akk messages waiting in line?
source share