2017-06-20 34 views
0

我有從tibco ems隊列中提取待處理消息的要求。以下是我使用spring jms模板的程序。但是,我發佈了5000條消息進行排隊,並嘗試提取相同的消費數量,並意識到花了將近20分鐘的時間瀏覽並獲取計數。請告知這裏的任何性能改進或任何其他更好的方式來獲得未決消息數Tibco EMS Queuebrowser待處理消息計數緩慢

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); 

回答

0

從EMS 8.3樣本:

 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++; 
     } 
+0

此代碼看起來一樣的東西我張貼。不確定,如果這可以提高性能。 – skanda