Lwin Htoo Ko
Lwin Htoo Ko

Reputation: 2406

QueueBrowser does not return all messages

I list down queues and messages from each queue. The following is my code. But, QueueBrowser does not retrieve messages correctly.

Let's say, I have a queue named TestQueue which has 1000 message.

first time i run my program it shows only 200 messages. second - 400 third - 600 forth - 800 fifth - 1000

Can you tell me how to fix this problem?

ConnectionFactory out = new ActiveMQConnectionFactory("tcp://localhost:61616?jms.prefetchPolicy.all=10000");
ActiveMQConnection connection = (ActiveMQConnection) out.createConnection();

connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

Set<ActiveMQQueue> amqs = connection.getDestinationSource().getQueues(); 
Iterator<ActiveMQQueue> queues = amqs.iterator(); 

while ( queues.hasNext() ) 
{ 
    ActiveMQQueue queue_t = aqueues.next(); 
    String q_name = queue_t.getPhysicalName();
    List<ActiveMQMessage> msgList = ((ActiveMQSession) session).getUnconsumedMessages();

    System.out.println( "\nQueue = " + q_name);

    QueueBrowser queueBrowser = session.createBrowser(queue_t);
    Enumeration e = queueBrowser.getEnumeration();

    int numMsgs = 0;
    while(e.hasMoreElements()) 
    {
         Message message = (Message) e.nextElement();
         numMsgs++;
    }
    System.out.println("No of messages = " + numMsgs);
    queueBrowser.close();
}                    
session.close();
connection.close();

Upvotes: 8

Views: 8178

Answers (2)

don
don

Reputation: 1

Just connect using JMX to Broker (use jconsole for example). On specific queue set MaxPageSize properties more than 200 then you can list more messages.

Upvotes: 0

MaDa
MaDa

Reputation: 10762

From the javax.jms.QueueBrowser API:

Messages may be arriving and expiring while the scan is done. The JMS API does not require the content of an enumeration to be a static snapshot of queue content. Whether these changes are visible or not depends on the JMS provider.

Have you tried specifying the prefetch policy?

Upvotes: 3

Related Questions