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

私が直面している問題は、メッセージ オブジェクトが null として出力されることです。jms 監視ツールでテストしたところ、トピックにいくつかのメッセージがありますが、上記のコードは 60 秒経過してもメッセージを取得できません。

ここで何が欠けているのですか?

4

1 に答える 1

0

理解した。を呼び出す直前にmessageConsumer.receive();、 を呼び出しconnection.start()てメッセージの配信を開始します。

于 2012-02-23T01:05:17.483 に答える