Java JMS主题的同步行为

Java JMS主题的同步行为,java,jms,spring-jms,tibco-ems,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.createQ

下面是流的伪代码,它使用队列发送消息,然后同步收听主题。底层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);
现在,我使用创建的相同的
会话
对象听一个主题,并等待有响应

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秒后也无法识别它


知道我在这里遗漏了什么吗?

找到了答案。就在调用
messageConsumer.receive()之前
,调用
connection.start()
以开始传递消息