JMS QueueBrowser getEnumeration 是否需要连接启动

Does JMS QueueBrowser getEnumeration requires Connection Start

我想知道在执行 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 文档在查看队列之前谈论任何特定的开始。有什么想法吗?

是的,Connection.Start() 是必需的。 QueueBrowserMessageConsumer 类似,唯一的区别是 QueueBrowser 不会从 JMS 提供程序中删除消息。如果应用程序不调用 Connection.Start 方法,JMS 提供程序将不会传递消息。