public interface MessageConsumer extends AutoCloseableSE
MessageConsumer オブジェクトを使用して、宛先からメッセージを受信します。MessageConsumer オブジェクトは、Destination オブジェクトをセッションによって提供されるメッセージコンシューマー作成メソッドに渡すことによって作成されます。MessageConsumer は、すべてのメッセージコンシューマーの親インターフェースです。
MessageConsumer は、メッセージセレクターを使用して作成できます。メッセージセレクターを使用すると、クライアントは、メッセージコンシューマーに配信されるメッセージを、セレクターに一致するメッセージに制限できます。
クライアントは、MessageConsumer のメッセージを同期的に受信するか、MessageConsumer にメッセージの到着時に非同期で配信させることができます。
同期受信の場合、クライアントは、receive メソッドの 1 つを使用して、MessageConsumer から次のメッセージをリクエストできます。クライアントがポーリングしたり、次のメッセージを待機したりできるようにする receive にはいくつかのバリエーションがあります。
非同期配信の場合、クライアントは MessageListener オブジェクトを MessageConsumer に登録できます。メッセージが MessageConsumer に到着すると、MessageListener の onMessage メソッドを呼び出してメッセージを配信します。
MessageListener が例外をスローするのはクライアントプログラミングエラーです。
QueueReceiver, TopicSubscriber, Session| 修飾子と型 | メソッドと説明 |
|---|---|
void | close() メッセージコンシューマーを閉じます。 |
MessageListener | getMessageListener()MessageConsumer の MessageListener を取得します。 |
StringSE | getMessageSelector() このメッセージコンシューマーのメッセージセレクタ式を取得します。 |
Message | receive() このメッセージコンシューマー用に作成された次のメッセージを受信します。 |
Message | receive(long timeout) 指定されたタイムアウト間隔内に到着する次のメッセージを受信します。 |
Message | receiveNoWait() 次のメッセージがすぐに利用可能な場合、受信します。 |
void | setMessageListener(MessageListener listener)MessageConsumer の MessageListener を設定します。 |
StringSE getMessageSelector() throws JMSException
JMSException - 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージセレクターの取得に失敗した場合。MessageListener getMessageListener() throws JMSException
MessageConsumer の MessageListener を取得します。 このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSException がスローされる可能性があります。
MessageConsumer の MessageListener、または設定されていない場合は nullJMSException - 次のいずれかの理由で Jakarta Messaging プロバイダーが MessageListener の取得に失敗した場合:setMessageListener(javax.jms.MessageListener)void setMessageListener(MessageListener listener) throws JMSException
MessageConsumer の MessageListener を設定します。MessageListener を null に設定することは、MessageConsumer の MessageListener を設定解除することと同じです。
メッセージが既存のリスナーによって消費されている間、または MessageConsumer がメッセージを同期的に消費するために使用されているときに、このメソッドを呼び出す効果は定義されていません。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSException がスローされる可能性があります。
listener - メッセージの配信先のリスナー JMSException - Jakarta Messaging プロバイダーが次のいずれかの理由で MessageConsumer の MessageListener の設定に失敗した場合:getMessageListener()Message receive() throws JMSException
この呼び出しは、メッセージが生成されるまで、またはこのメッセージコンシューマーが閉じられるまで、無期限にブロックされます。
この receive がトランザクション内で実行される場合、コンシューマーはトランザクションがコミットされるまでメッセージを保持します。
JMSException - 内部エラーのために Jakarta Messaging プロバイダーが次のメッセージを受信できない場合。Message receive(long timeout) throws JMSException
この呼び出しは、メッセージが到着するか、タイムアウトが期限切れになるか、このメッセージコンシューマーが閉じられるまでブロックされます。ゼロの timeout が期限切れになることはなく、呼び出しは無期限にブロックされます。
timeout - タイムアウト値 (ミリ秒単位)JMSException - 内部エラーのために Jakarta Messaging プロバイダーが次のメッセージを受信できない場合。Message receiveNoWait() throws JMSException
JMSException - 内部エラーのために Jakarta Messaging プロバイダーが次のメッセージを受信できない場合。void close()
throws JMSException プロバイダーは、Java 仮想マシンの外部で MessageConsumer に代わって一部のリソースを割り当てる可能性があるため、クライアントは、必要のないときに閉じる必要があります。最終的にこれらのリソースを再利用するためにガベージコレクションに依存することは、十分なタイムリーではない可能性があります。
この呼び出しは、このコンシューマーで進行中の receive 呼び出しが完了するまでブロックされます。このメッセージコンシューマーが閉じられると、ブロックされた receive 呼び出しは null を返します。
メッセージリスナーが別のスレッドで進行しているときにこのメソッドが呼び出されると、メッセージリスナーが完了するまでブロックされます。
このメソッドは、それ自体のコンシューマー上のメッセージリスナーの onMessage メソッドから呼び出すことができます。このメソッドが戻った後、onMessage メソッドは正常に完了することができます。
このメソッドは、同時に呼び出すことができる唯一の MessageConsumer メソッドです。
AutoCloseableSE の closeSE JMSException - 内部エラーが原因で Jakarta Messaging プロバイダーがコンシューマーを閉じることができない場合。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.