2012-02-22 54 views
0

我有下面的流代码,它使用队列发送消息,然后同步收听主题。底层的JMS提供商是Tibco EMS。JMS的同步行为主题

//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.."); 
} 

我面临的问题是消息对象是空的。我使用jms监控工具进行测试,该主题确实有一些信息,但上述代码即使在60秒后也无法提取。

任何想法我在这里想念什么?

回答

0

想通了。在致电messageConsumer.receive();之前,致电connection.start()开始传递讯息。