receive
メソッドや receiveNoWait
メソッドを使用することにより、onMessage
コールバックメソッド内でメッセージを待つ代わりに、メッセージを直接取り出すことができます。これらのメソッドはキューとトピックに対して機能します。これらのメソッドは両方とも、Message
タイプのオブジェクトを返します。このオブジェクトは、適切なメッセージタイプにキャストする必要があります (TextMessage
など)。 次のように、これらのメソッドを使用します。
receive
メソッドと receiveNoWait
メソッドは MessageConsumer
インターフェイスで定義されており、トピック (TopicSubscriber
を通して) とキュー (QueueReceiver
を通して) で利用できます。
これらのメソッドを使用するために、MessageListener
インターフェイスの実装、setMessageListener
メソッドのコーディング、または onMessage
メソッドの実装は行いません。代わりに、次の例に示すように、接続開始後に、receive
か receiveNoWait
のいずれかをコーディングします。
...
topicConnection.start(); ... TextMessage mess = (TextMessage)sub.receiveNoWait(); ...
このテクニックは、MessageListener
インターフェイスを実装できないサーブレットや MDB 以外の EJB で特に役立ちます。