我需要从tibco ems队列中获取待处理的消息。下面是我使用spring jms模板的程序。但是,我发布了5000条消息到队列,并试图获取相同的计数而不消耗,并意识到它花了将近20分钟来浏览并获得计数。请告知此处的任何性能改进或任何其他更好的方式来获取待处理的消息计数
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 :(得分: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++;
}