0

I have a requirement to fetch the pending messages from tibco ems queue. Below is my program using spring jms template. However, I published 5000 messages to queue and tried fetching the count of same with out consuming, and realized it took nearly 20 minutes to browse and get the count. Please advise on any performance improvement here or any other better way to get the pending message count

jmsTemplate.execute(new SessionCallback<QueueBrowser>() {
   public QueueBrowser doInJms(Session session) throws JMSException {
    javax.jms.Queue queue = session.createQueue(queueName);
    QueueBrowser browser =  session.createBrowser(queue);
    Enumeration messages = browser.getEnumeration();
    int num = 0;
    while(messages.hasMoreElements()) {
    messages.nextElement();
    num +=1;
    LOG.info("num={}",num);
  }
  return null;
 }
 }, true);
Tim Bish
  • 17,475
  • 4
  • 32
  • 42
Skanda
  • 835
  • 1
  • 15
  • 32

1 Answers1

0

From EMS 8.3 samples:

        javax.jms.QueueBrowser browser = session.createBrowser(queue);

        Enumeration msgs = browser.getEnumeration();

        int browseCount=0;

        while (msgs.hasMoreElements())
        {
            message = (javax.jms.Message)msgs.nextElement();
            System.err.println("Browsed message: number="+message.getIntProperty("msg_num"));
            browseCount++;
        }
angel t
  • 11
  • 2