0

我有下面的流伪代码,它使用队列发送消息,然后同步收听主题。底层 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..");
}

我面临的问题是消息对象显示为空。我使用 jms 监控工具进行了测试,主题确实有一些消息,但上面的代码即使在 60 秒后也无法接收到它。

知道我在这里想念什么吗?

4

1 回答 1

0

弄清楚了。就在调用之前messageConsumer.receive();,调用connection.start()来开始传递消息。

于 2012-02-23T01:05:17.483 回答