JMS QueueBrowser getteneration需要连接启动吗?



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

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提供程序将无法传递消息。

最新更新