receive と receiveNoWait の使用

receive メソッドや receiveNoWait メソッドを使用することにより、onMessage コールバックメソッド内でメッセージを待つ代わりに、メッセージを直接取り出すことができます。これらのメソッドはキューとトピックに対して機能します。これらのメソッドは両方とも、Message タイプのオブジェクトを返します。このオブジェクトは、適切なメッセージタイプにキャストする必要があります (TextMessage など)。 次のように、これらのメソッドを使用します。

receive メソッドと receiveNoWait メソッドは MessageConsumer インターフェイスで定義されており、トピック (TopicSubscriber を通して) とキュー (QueueReceiver を通して) で利用できます。

これらのメソッドを使用するために、MessageListener インターフェイスの実装、setMessageListener メソッドのコーディング、または onMessage メソッドの実装は行いません。代わりに、次の例に示すように、接続開始後に、receivereceiveNoWait のいずれかをコーディングします。

...
topicConnection.start();
...
TextMessage mess = (TextMessage)sub.receiveNoWait();
...

このテクニックは、MessageListener インターフェイスを実装できないサーブレットや MDB 以外の EJB で特に役立ちます。