我想知道在我们执行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。有什么想法吗?
答案 0 :(得分:1)
是的,Connection.Start()
是必需的。 QueueBrowser
与MessageConsumer
类似,唯一不同的是QueueBrowser
不会从JMS提供程序中删除邮件。如果没有应用程序调用{{1}}方法,JMS提供程序将不会传递消息。