2013-10-29 36 views
1

我正在尝试使用浏览器查看队列中的消息。 代码如下:HornetQ队列浏览器

javax.naming.InitialContext ctx = new javax.naming.InitialContext(); 
javax.jms.QueueConnectionFactory qcf = (javax.jms.QueueConnectionFactory)ctx.lookup('java:/XAConnectionFactory'); 

javax.jms.QueueConnection connection = qcf.createQueueConnection('admin', 'admin'); // qcf.createQueueConnection(); 
javax.jms.QueueSession session = connection.createQueueSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE); 
connection.start(); 

// It is a "special" queue and it is not looked up from JNDI but constructed directly 
javax.jms.Queue queue = (javax.jms.Queue)ctx.lookup('/queue/myQueue'); 

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

TreeMap<Date, javax.jms.Message> messageMap = new TreeMap<Date, javax.jms.Message>(); 
int counter = 0; 

Enumeration<javax.jms.Message> enumeration = browser.getEnumeration(); 
while (enumeration.hasMoreElements()) { 
    counter++; 
    javax.jms.Message message = enumeration.nextElement(); 
    messageMap.put(new Date(message.getJMSTimestamp()), message); 
} 

connection.stop(); 
ctx.close(); 
session.close(); 
connection.close(); 

的问题是,我一直在枚举只得到1消息,即使在JMX控制台看时,并调用listMessagesAsJSON我得到吨的消息。

关于我在做什么错的任何想法?

回答

1

这可能是因为Sergiu说你正在碰到一个bug。

您可以作为一种解决方法以不同的方式在连接工厂上定义消费者窗口大小。也许有一个连接工厂只是为了这个用例...或者可能升级HornetQ的版本。

+0

我已经根据Justin Bertam在社区论坛的回复回答了我自己的问题:)谢谢Clebert。 – Sergiu

相关问题