如何在不消耗它们的情况下读取JMS消息 - 使用ActiveMQ

时间:2013-01-09 18:28:21

标签: jms activemq

我想知道是否有任何方法可以读取jms和actibemq消息而不消耗它?我知道消息可以从队列中消费,但我仍然想问这个问题。!!

3 个答案:

答案 0 :(得分:5)

您可以通过JMS QueueBrowser浏览队列上的消息,或者在ActiveMQ中,您可以通过JMX或使用命令行工具浏览内容:

ActiveMQ console tools

JMS QueueBrowser API

ActiveMQ JMX

答案 1 :(得分:3)

您需要使用QueueBrowser类来执行此操作,而不是使用Message-consumers:

ConnectionFactory connectionFactory = 
    new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); 
Connection connection = 
    connectionFactory.createConnection("admin","admin");
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("Test");
QueueBrowser queueBrowser = session.createBrowser(queue);
Enumeration msgs = queueBrowser.getEnumeration();
while (msgs.hasMoreElements()) {
    //do your things here
}

答案 2 :(得分:1)

另一种选择是“消费”消息,但只是在交易中,然后当你完成后,将其回滚,但浏览器可能会更好,因为它是“它的用途”。

如果您只是在寻找特定的消息,并且手册会这样做,您可以通过单击“RSS提要”按钮查看(我认为所有,至少部分内容)有关activemq的消息及其内容。用户界面。它基本上将它们全部转储到屏幕上。 “原子进给”选项似乎加载速度比“RSS”一个FWIW快。