Синхронное поведение с темой JMS - PullRequest
0 голосов
/ 23 февраля 2012

Ниже приведен псевдокод потока, который использует очередь для отправки сообщения, а затем синхронно прослушивает тему. Основным поставщиком 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 секунд.

Есть идеи, что мне здесь не хватает?

1 Ответ

0 голосов
/ 23 февраля 2012

Разобрался.Непосредственно перед вызовом messageConsumer.receive();, позвоните на connection.start(), чтобы начать доставку сообщения.

...