JMS QueueBrowser getEnumeration是否需要Connection Start

时间:2015-08-10 05:35:09

标签: java jms

我想知道在我们执行QueueBrowser browse()之前是否需要调用JMS Connection start()。在javadoc中找不到关于start()的任何内容作为browse()的前置操作,并且浏览器的每个供应商样本似乎都不同。他们中的一些人打电话而其他人不打电话。 我问这个,因为如果我不执行start(),ActiveMQ不会浏览消息。

ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://**:**");
Connection connection = factory.createConnection();

connection.start();

Session session = connection.createSession(false, 1);
TextMessage message = session.createTextMessage();
message.setText("This is a sample message");

Queue dest = new ActiveMQQueue("Sample");
MessageProducer producer = session.createProducer(dest);
producer.send(message);

QueueBrowser browser = session.createBrowser(dest);
Enumeration<Message> messages = browser.getEnumeration();
/* Iteration code here 
 * If connection.start() is'nt called, no element in returned collection
 * If connection.start() is called, the returned collection contains 
 * queue elements.
 */
..

在查看队列之前找不到特定要启动的java doc。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,Connection.Start()是必需的。 QueueBrowserMessageConsumer类似,唯一不同的是QueueBrowser不会从JMS提供程序中删除邮件。如果没有应用程序调用{​​{1}}方法,JMS提供程序将不会传递消息。