我有以下伪代码流,它使用队列发送消息然后同步监听主题。基础JMS提供商是Tibco EMS。
//Send to Queue
Connection connection = createConnection(); // get the JMS connection
Session session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("sample.queue");
MessageProducer messageProducer = session.createProducer(queue);
Message message = createMessage(); //create JMS message
messageProducer.send(message);
现在,我使用创建的相同session
对象收听主题并等待响应。
Topic topic = session.createTopic("sample.topic");
MessageConsumer messageConsumer = session.createConsumer(topic);
//wait for the reply.
Message responseMessage = messageConsumer.receive(60000);
if(responseMessage != null) {
System.out.println("Message received..");
}
我面临的问题是消息对象是null。我使用jms监控工具进行测试,主题确实有一些消息,但上面的代码即使在60秒后也无法获取。
知道我在这里缺少什么吗?
答案 0 :(得分:0)
想出来。在致电messageConsumer.receive();
之前,请致电connection.start()
以开始传递讯息。