JMS主题的同步行为

时间:2012-02-22 22:24:00

标签: java jms spring-jms tibco-ems

我有以下伪代码流,它使用队列发送消息然后同步监听主题。基础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秒后也无法获取。

知道我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:0)

想出来。在致电messageConsumer.receive();之前,请致电connection.start()以开始传递讯息。