キューを使用してメッセージを送信し、トピックを同期的にリッスンするフローの疑似コードを以下に示します。基礎となる 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 秒経過してもメッセージを取得できません。
ここで何が欠けているのですか?