public interface JMSContext extends AutoCloseableSE
JMSContext
は、Jakarta Messaging 2.0 用に導入された簡略化された Jakarta Messaging API のメインインターフェースです。これにより、Java Message Service 1.1 API の 2 つの別個のオブジェクト(Connection
と Session
)の機能が 1 つのオブジェクトに結合されます。 アプリケーションがメッセージを送信する必要がある場合は、createProducer
メソッドを使用して、メッセージを構成および送信するためのメソッドを提供する JMSProducer
を作成します。メッセージは、同期的または非同期的に送信できます。
アプリケーションがメッセージを受信する必要がある場合、アプリケーションはいくつかの createConsumer
または createDurableConsumer
メソッドのいずれかを使用して JMSConsumer
を作成します。JMSConsumer
は、同期的または非同期的にメッセージを受信するためのメソッドを提供します。
Java Message Service 1.1 API の観点から、JMSContext
は Connection
と Session
の両方を表すと考える必要があります。簡略化された API により、アプリケーションがこれらのオブジェクトを使用する必要がなくなりますが、接続とセッションの概念は依然として重要です。接続は Jakarta Messaging サーバーへの物理リンクを表し、セッションはメッセージを送受信するためのシングルスレッドコンテキストを表します。
JMSContext
は、ConnectionFactory
でいくつかの createContext
メソッドの 1 つを呼び出すことによって作成できます。この方法で作成された JMSContext
は、 アプリケーション管理であると説明されています。アプリケーション管理の JMSContext
は、close
メソッドを呼び出して、不要になったときに閉じる必要があります。
あるいは、Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、@Inject
アノテーションを使用してアプリケーションに JMSContext
を挿入することもできます。この方法で作成された JMSContext
は、 コンテナー管理されていると説明されています。コンテナー管理の JMSContext
は、コンテナーによって自動的に閉じられます。
Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、接続上に複数のアクティブセッションを作成することは許可されていないため、1 つのオブジェクトに結合すると、この制限を利用してより単純な API を提供できます。
ただし、Java SE 環境または Jakarta EE アプリケーションクライアントコンテナーで実行されているアプリケーションは、同じ接続で複数のアクティブなセッションを作成できます。これにより、同じ物理接続を複数のスレッドで同時に使用できます。同じ接続で複数のセッションを作成する必要があるこのようなアプリケーションは、ConnectionFactory
で createContext
メソッドの 1 つを使用して最初の JMSContext
を作成し、次に JMSContext
で createContext
メソッドを使用して同じ接続を使用する追加の JMSContext
オブジェクトを作成する必要があります。これらの JMSContext
オブジェクトはすべてアプリケーションで管理されており、必要がなくなったら close
メソッドを呼び出して閉じる必要があります。
修飾子と型 | フィールドと説明 |
---|---|
static int | AUTO_ACKNOWLEDGE このセッションモードでは、JMSContext のセッションは、セッションが receive の呼び出しから正常に戻ったとき、またはセッションがメッセージを処理するために呼び出したメッセージリスナーが正常に戻ったときに、クライアントがメッセージを受信したことを自動的に確認します。 |
static int | CLIENT_ACKNOWLEDGE このセッションモードでは、クライアントはメッセージの acknowledge メソッドを呼び出すことにより、消費されたメッセージを確認します。 |
static int | DUPS_OK_ACKNOWLEDGE このセッションモードは、JMSContext のセッションにメッセージの配信を遅延確認するように指示します。 |
static int | SESSION_TRANSACTED このセッションモードは、JMSContext のセッションに、ローカルトランザクションでメッセージを配信および消費するように指示します。メッセージは、後で commit を呼び出すことによってコミットされるか、rollback を呼び出すことによってロールバックされます。 |
修飾子と型 | メソッドと説明 |
---|---|
void | acknowledge() JMSContext のセッションによって消費されたすべてのメッセージを確認します。 |
void | close() JMSContext を閉じます |
void | commit() このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。 |
QueueBrowser | createBrowser(Queue queue) QueueBrowser オブジェクトを作成して、指定されたキューのメッセージを確認します。 |
QueueBrowser | createBrowser(Queue queue, StringSE messageSelector) QueueBrowser オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。 |
BytesMessage | createBytesMessage() BytesMessage オブジェクトを作成します。 |
JMSConsumer | createConsumer(Destination destination) 指定された宛先の JMSConsumer を作成します。 |
JMSConsumer | createConsumer(Destination destination, StringSE messageSelector) メッセージセレクターを使用して、指定した宛先の JMSConsumer を作成します。 |
JMSConsumer | createConsumer(Destination destination, StringSE messageSelector, boolean noLocal) メッセージセレクターと noLocal パラメーターを指定して、指定した宛先の JMSConsumer を作成します。 |
JMSContext | createContext(int sessionMode) この JMSContext と同じ接続を使用して、指定されたセッションモードで新しい JMSContext を作成し、新しいセッションを作成します。 |
JMSConsumer | createDurableConsumer(Topic topic, StringSE name) 指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。 |
JMSConsumer | createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。 |
MapMessage | createMapMessage() MapMessage オブジェクトを作成します。 |
Message | createMessage() Message オブジェクトを作成します。 |
ObjectMessage | createObjectMessage() ObjectMessage オブジェクトを作成します。 |
ObjectMessage | createObjectMessage(SerializableSE object) 初期化された ObjectMessage オブジェクトを作成します。 |
JMSProducer | createProducer() メッセージの構成と送信に使用できる新しい JMSProducer オブジェクトを作成します |
Queue | createQueue(StringSE queueName) 指定されたプロバイダー固有のキュー名をカプセル化する Queue オブジェクトを作成します。 |
JMSConsumer | createSharedConsumer(Topic topic, StringSE sharedSubscriptionName) 指定されたトピックに指定された名前で共有の非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。 |
JMSConsumer | createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector) メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。 |
JMSConsumer | createSharedDurableConsumer(Topic topic, StringSE name) メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。 |
JMSConsumer | createSharedDurableConsumer(Topic topic, StringSE name, StringSE messageSelector) メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。 |
StreamMessage | createStreamMessage() StreamMessage オブジェクトを作成します。 |
TemporaryQueue | createTemporaryQueue() TemporaryQueue オブジェクトを作成します。 |
TemporaryTopic | createTemporaryTopic() TemporaryTopic オブジェクトを作成します。 |
TextMessage | createTextMessage() TextMessage オブジェクトを作成します。 |
TextMessage | createTextMessage(StringSE text) 初期化された TextMessage オブジェクトを作成します。 |
Topic | createTopic(StringSE topicName) 指定されたプロバイダー固有のトピック名をカプセル化する Topic オブジェクトを作成します。 |
boolean | getAutoStart() この JMSContext で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを返します。 |
StringSE | getClientID() JMSContext の接続のクライアント識別子を取得します。 |
ExceptionListener | getExceptionListener() JMSContext の接続用の ExceptionListener オブジェクトを取得します。 |
ConnectionMetaData | getMetaData() JMSContext の接続の接続メタデータを取得します。 |
int | getSessionMode() JMSContext のセッションのセッションモードを返します。 |
boolean | getTransacted() JMSContext のセッションがトランザクションモードであるかどうかを示します。 |
void | recover() JMSContext のセッションでメッセージ配信を停止し、最も古い未確認メッセージでメッセージ配信を再開します。 |
void | rollback() このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。 |
void | setAutoStart(boolean autoStart) この JMSContext によって使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを指定します。 |
void | setClientID(StringSE clientID) JMSContext の接続のクライアント識別子を設定します。 |
void | setExceptionListener(ExceptionListener listener) JMSContext の接続の例外リスナーを設定します。 |
void | start() JMSContext の接続による受信メッセージの配信を開始(または再開)します。 |
void | stop() JMSContext の接続による受信メッセージの配信を一時的に停止します。 |
void | unsubscribe(StringSE name) クライアントによって作成された永続サブスクリプションを登録解除します。 |
static final int AUTO_ACKNOWLEDGE
receive
の呼び出しから正常に戻ったとき、またはセッションがメッセージを処理するために呼び出したメッセージリスナーが正常に戻ったときに、クライアントがメッセージを受信したことを自動的に確認します。static final int CLIENT_ACKNOWLEDGE
acknowledge
メソッドを呼び出すことにより、消費されたメッセージを確認します。消費されたメッセージを確認すると、セッションが消費したすべてのメッセージが確認されます。このセッションモードを使用すると、クライアントは、メッセージを処理しようとしているときに、未確認のメッセージを大量に作成する可能性があります。Jakarta Messaging プロバイダーは、クライアントがリソースの枯渇に追い込まれ、使用している一部のリソースが一時的にブロックされたときに障害が発生しないように、クライアントのオーバーランを制限する方法を管理者に提供する必要があります。
static final int DUPS_OK_ACKNOWLEDGE
static final int SESSION_TRANSACTED
commit
を呼び出すことによってコミットされるか、rollback
を呼び出すことによってロールバックされます。JMSContext createContext(int sessionMode)
JMSContext
と同じ接続を使用して、指定されたセッションモードで新しい JMSContext
を作成し、新しいセッションを作成します。 このメソッドは接続を開始しません。接続がまだ開始されていない場合は、その接続のいずれかの JMSContext
オブジェクトで JMSConsumer
が作成されると、接続が自動的に開始されます。
sessionMode
が JMSContext.SESSION_TRANSACTED
に設定されている場合、セッションはローカルトランザクションを使用します。ローカルトランザクションは、JMSContext
の commit
または rollback
メソッドを呼び出すことにより、後でコミットまたはロールバックできます。sessionMode
が JMSContext.CLIENT_ACKNOWLEDGE
、JMSContext.AUTO_ACKNOWLEDGE
、JMSContext.DUPS_OK_ACKNOWLEDGE
のいずれかに設定されている場合。その後、セッションは非トランザクションになり、このセッションで受信されたメッセージは sessionMode
の値に従って確認されます。これらの確認応答モードの意味の定義については、以下のリンクを参照してください。 このメソッドは、Jakarta EE Web または EJB コンテナーで実行されているアプリケーションで使用しないでください。使用すると、そのようなアプリケーションが接続ごとに複数のアクティブな(閉じていない) Session
オブジェクトを作成しようとしてはならないという制限に違反するためです。このメソッドが Jakarta EE Web または EJB コンテナーで呼び出されると、JMSRuntimeException
がスローされます。
sessionMode
- 4 つの可能なセッションモードのどれが使用されるかを示します。許可される値は JMSContext.SESSION_TRANSACTED
、JMSContext.CLIENT_ACKNOWLEDGE
、JMSContext.AUTO_ACKNOWLEDGE
、JMSContext.DUPS_OK_ACKNOWLEDGE
です。JMSRuntimeException
- Jakarta Messaging プロバイダーが JMSContext の作成に失敗した場合SESSION_TRANSACTED
, CLIENT_ACKNOWLEDGE
, AUTO_ACKNOWLEDGE
, DUPS_OK_ACKNOWLEDGE
, ConnectionFactory.createContext()
, ConnectionFactory.createContext(int)
, ConnectionFactory.createContext(java.lang.String, java.lang.String)
, ConnectionFactory.createContext(java.lang.String, java.lang.String, int)
, createContext(int)
JMSProducer createProducer()
JMSProducer
オブジェクトを作成します JMSProducer
オブジェクト JMSProducer
StringSE getClientID()
この値は、Jakarta Messaging プロバイダーに固有です。これは、管理者が ConnectionFactory
オブジェクトで事前構成するか、setClientID
メソッドを呼び出してアプリケーションによって動的に割り当てられます。
JMSRuntimeException
- 内部エラーが原因で Jakarta Messaging プロバイダーが JMSContext の接続のクライアント ID を返さない場合。void setClientID(StringSE clientID)
Jakarta Messaging クライアントのクライアント ID を割り当てるための推奨される方法は、クライアント固有の ConnectionFactory
オブジェクトで構成し、それが作成する Connection
オブジェクトに透過的に割り当てることです。
あるいは、クライアントは、プロバイダー固有の値を使用して、JMSContext の接続のクライアント ID を設定できます。クライアント ID を明示的に設定する機能は、管理上構成されている ID をオーバーライドするためのメカニズムではありません。管理上指定された識別子が存在しない場合に提供されます。存在する場合、それを設定して変更しようとすると、IllegalStateRuntimeException
をスローする必要があります。クライアントがクライアント識別子を明示的に設定する場合、JMSContext を作成した直後、JMSContext で他のアクションが実行される前に設定する必要があります。この時点以降、クライアント ID の設定はプログラミングエラーであり、IllegalStateRuntimeException
をスローする必要があります。
クライアント識別子の目的は、JMSContext の接続とそのオブジェクトを、プロバイダーによってクライアントに代わって維持される状態に関連付けることです。Jakarta Messaging API によって識別されるそのような状態は、永続サブスクリプションをサポートするために必要な状態だけです。
このメソッドが呼び出されたときに同じ clientID
との別の接続がすでに実行されている場合、Jakarta Messaging プロバイダーは重複する ID を検出して InvalidClientIDException
をスローする必要があります。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSRuntimeException
がスローされる可能性があります。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
clientID
- 一意のクライアント識別子 InvalidClientIDRuntimeException
- Jakarta Messaging クライアントが無効または重複したクライアント ID を指定した場合。IllegalStateRuntimeException
-JMSContext
がコンテナー管理(注入)されている場合。JMSRuntimeException
- 次のいずれかの理由により、Jakarta Messaging プロバイダーが JMSContext の接続のクライアント ID を設定できない場合。ConnectionMetaData getMetaData()
JMSRuntimeException
- Jakarta Messaging プロバイダーが接続メタデータの取得に失敗した場合 ConnectionMetaData
ExceptionListener getExceptionListener()
ExceptionListener
オブジェクトを取得します。すべての Connection
に ExceptionListener
が関連付けられているわけではありません。ExceptionListener
、または ExceptionListener
がその接続に関連付けられていない場合は null。JMSRuntimeException
- Jakarta Messaging プロバイダーが JMSContext の接続用の ExceptionListener
の取得に失敗した場合。Connection.setExceptionListener(javax.jms.ExceptionListener)
void setExceptionListener(ExceptionListener listener)
Jakarta Messaging プロバイダーは、接続に重大な問題を検出すると、接続の ExceptionListener
が登録されているかどうかを通知します。これを行うには、リスナーの onException
メソッドを呼び出し、問題を説明する JMSRuntimeException
オブジェクトを渡します。
例外リスナーを使用すると、クライアントに問題を非同期的に通知できます。一部の接続はメッセージのみを消費するため、接続が失敗したことを知る方法が他にありません。
接続は、その ExceptionListener
の実行を直列化します。
Jakarta Messaging プロバイダーは、クライアントに通知する前に、接続の問題自体を解決する必要があります。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSRuntimeException
がスローされる可能性があります。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
listener
- 例外リスナー IllegalStateRuntimeException
- JMSContext
がコンテナー管理(注入)されている場合。JMSRuntimeException
- Jakarta Messaging プロバイダーが次のいずれかの理由で例外リスナーの設定に失敗した場合:void start()
start
の呼び出しは無視されます。JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
IllegalStateRuntimeException
- JMSContext
がコンテナー管理(注入)されている場合。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ配信の開始に失敗した場合。stop()
void stop()
start
メソッドを使用して配信を再開できます。接続が停止すると、接続のすべてのメッセージコンシューマーへの配信が禁止されます。同期受信ブロックであり、メッセージはメッセージリスナーに配信されません。 接続を停止しても、メッセージを送信する機能には影響しません。すでに停止している接続での stop
の呼び出しは無視されます。
stop
の呼び出しは、メッセージの配信が一時停止するまで戻りません。つまり、クライアントは、そのメッセージリスナーが呼び出されず、receive
呼び出しが戻るのを待っているすべての制御スレッドが、接続が再開されるまでメッセージを返さないという事実に依存できます。停止した接続の受信タイマーは進み続けるため、接続が停止している間は受信がタイムアウトする場合があります。
stop
が呼び出されたときにメッセージリスナーが実行されている場合、stop
呼び出しは、すべてのリスナーが戻るまで待機してから戻る必要があります。これらのメッセージリスナーが完了する間、それらは利用可能な接続の完全なサービスを持っている必要があります。
ただし、stop メソッドがそれ自体の JMSContext
または同じ接続を使用する他の JMSContext
のメッセージリスナーから呼び出された場合、失敗して javax.jms.IllegalStateRuntimeException
をスローするか、成功して接続を停止し、他のすべてのメッセージまでブロックします。実行されていた可能性のあるリスナーが戻ってきました。
この場合、2 つの代替動作が許可されるため、アプリケーションは、独自の JMSContext
または同じ接続を使用する他の JMSContext
のメッセージリスナーから stop
を呼び出さないようにする必要があります。これは、移植性がないためです。
誤解を避けるために、stop
が呼び出されたときに JMSContext の接続の例外リスナーが実行されている場合、stop
呼び出しは、例外リスナーが戻るまで待機してから戻る必要はありません。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSRuntimeException
がスローされる可能性があります。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
IllegalStateRuntimeException
-JMSContext
がコンテナー管理(注入)されている場合。JMSRuntimeException
- Jakarta Messaging プロバイダーが次のいずれかの理由でメッセージ配信の停止に失敗した場合:start()
void setAutoStart(boolean autoStart)
JMSContext
によって使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを指定します。これはデフォルトの動作であり、false
の値を指定してこのメソッドを呼び出すことで無効にできます。このメソッド自体は、接続を開始または停止しません。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
autoStart
- この JMSContext
で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうか。IllegalStateRuntimeException
- JMSContext
がコンテナー管理されている場合 (注入された)getAutoStart()
boolean getAutoStart()
JMSContext
で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを返します。JMSContext
で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうか。setAutoStart(boolean)
void close()
これにより、基になるセッションと、基になるプロデューサーおよびコンシューマーが閉じられます。基になる接続を使用している他のアクティブな(閉じられていない)JMSContext オブジェクトがない場合、このメソッドは基になる接続も閉じます。
プロバイダーは通常、接続に代わって JVM の外部に重要なリソースを割り当てるため、クライアントはこれらのリソースが不要になったときに閉じる必要があります。これらのリソースを最終的に再利用するためにガベージコレクションに依存することは、十分なタイミングではない場合があります。
接続を閉じると、すべての一時的な宛先が削除されます。
このメソッドが呼び出されると、メッセージ処理が正常にシャットダウンされるまで戻らないはずです。これは、実行されていた可能性のあるすべてのメッセージリスナーが返され、保留中のすべての受信が返されたことを意味します。閉じるは、接続のセッションのコンシューマーで受信するすべての保留中のメッセージを終了します。受信者は、クローズ時に利用可能なメッセージがあったかどうかに応じて、メッセージまたは null で戻る場合があります。接続 close
が呼び出されたときに、接続のセッションのメッセージリスナーの 1 つ以上がメッセージを処理している場合、接続とそのセッションのすべての機能は、Jakarta Messaging プロバイダーに制御を戻すまでそれらのリスナーが使用できる状態を維持する必要があります。
ただし、close メソッドがメッセージリスナーから独自の JMSContext
で呼び出された場合は、失敗して javax.jms.IllegalStateRuntimeException
をスローするか、成功して JMSContext
を閉じます。close
が成功し、JMSContext
のセッションモードが AUTO_ACKNOWLEDGE
に設定されている場合、onMessage 呼び出しが完了すると、現在のメッセージは自動的に確認応答されます。
この場合、2 つの代替動作が許可されているため、移植性がないため、アプリケーションは独自の JMSContext
でメッセージリスナーから close を呼び出すことを避ける必要があります。
このメソッドは、この JMSContext の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで返さないでください。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。
誤解を避けるために、close
が呼び出されたときに JMSContext の接続の例外リスナーが実行されている場合、close
呼び出しは、例外リスナーが戻るまで待機してから戻る必要はありません。
接続を閉じると、進行中のセッションのトランザクションがロールバックされます。セッションの作業が外部のトランザクションマネージャーによって調整される場合、セッションの commit
および rollback
メソッドは使用されず、閉じられたセッションの作業の結果は後でトランザクションマネージャーによって決定されます。
接続を閉じても、クライアントが確認したセッションの確認は強制されません。
閉じた接続のセッションから受信したメッセージの acknowledge
メソッドを呼び出すには、IllegalStateRuntimeException
をスローする必要があります。閉じた接続を閉じても、例外をスローしてはなりません。
CompletionListener コールバックメソッドはそれ自体の JMSContext で close を呼び出さないでください。これを行うと、 IllegalStateRuntimeException がスローされます。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
AutoCloseableSE
の closeSE
IllegalStateRuntimeException
-JMSContext
がコンテナー管理されている場合 (注入された)JMSRuntimeException
- 内部エラーが原因で Jakarta Messaging プロバイダーが JMSContext
を閉じることができない場合。例: リソースの解放またはソケット接続のクローズに失敗すると、この例外がスローされる可能性があります。BytesMessage createBytesMessage()
BytesMessage
オブジェクトを作成します。BytesMessage
オブジェクトは、未解釈のバイトのストリームを含むメッセージを送信するために使用されます。BytesMessage
オブジェクト JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。MapMessage createMapMessage()
MapMessage
オブジェクトを作成します。MapMessage
オブジェクトは、名前と値のペアの自己定義セットを送信するために使用されます。ここで、名前は String
オブジェクトであり、値は Java プログラミング言語のプリミティブ値です。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
MapMessage
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。Message createMessage()
Message
オブジェクトを作成します。Message
インターフェースは、すべての Jakarta Messaging メッセージのルートインターフェースです。Message
オブジェクトは、すべての標準メッセージヘッダー情報を保持します。ヘッダー情報のみを含むメッセージで十分な場合に送信できます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
Message
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。ObjectMessage createObjectMessage()
ObjectMessage
オブジェクトを作成します。ObjectMessage
オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
ObjectMessage
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。ObjectMessage createObjectMessage(SerializableSE object)
ObjectMessage
オブジェクトを作成します。ObjectMessage
オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
object
- このメッセージを初期化するために使用するオブジェクト ObjectMessage
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。StreamMessage createStreamMessage()
StreamMessage
オブジェクトを作成します。StreamMessage
オブジェクトは、Java プログラミング言語でプリミティブ値の自己定義ストリームを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
StreamMessage
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。TextMessage createTextMessage()
TextMessage
オブジェクトを作成します。TextMessage
オブジェクトは、String
オブジェクトを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
TextMessage
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。TextMessage createTextMessage(StringSE text)
TextMessage
オブジェクトを作成します。TextMessage
オブジェクトは、String
を含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
text
- このメッセージを初期化するために使用される文字列 TextMessage
オブジェクト。JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。boolean getTransacted()
JMSRuntimeException
- Jakarta Messaging プロバイダーが内部エラーのためにトランザクションモードを返せなかった場合 int getSessionMode()
JMSContext の作成時にセッションモードが指定されていなかった場合、JMSContext.AUTO_ACKNOWLEDGE の値が返されます。
JMSRuntimeException
- 内部エラーのために Jakarta Messaging プロバイダーが確認応答モードを返せなかった場合。Connection.createSession(boolean, int)
void commit()
このメソッドは、この JMSContext の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで返さないでください。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。
CompletionListener コールバックメソッドはそれ自体の JMSContext で commit を呼び出さないでください。これを行うと、 IllegalStateRuntimeException がスローされます。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
IllegalStateRuntimeException
-JMSContext
がコンテナー管理されている場合 (注入された)TransactionRolledBackRuntimeException
- コミット中に何らかの内部エラーが発生してトランザクションがロールバックされた場合。JMSRuntimeException
- 内部エラーが原因で Jakarta Messaging プロバイダーがトランザクションのコミットに失敗した場合 void rollback()
このメソッドは、この JMSContext の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで返さないでください。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。
CompletionListener コールバックメソッドはそれ自体の JMSContext で rollback を呼び出さないでください。これを行うと、 IllegalStateRuntimeException がスローされます。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
IllegalStateRuntimeException
-JMSContext
がコンテナー管理されている場合 (注入された)JMSRuntimeException
- 内部エラーが原因で Jakarta Messaging プロバイダーがトランザクションのロールバックに失敗した場合 void recover()
すべてのコンシューマーはメッセージをシリアル順に配信します。受信したメッセージを確認すると、クライアントに配信されたすべてのメッセージが自動的に確認されます。
セッションを再開すると、次のアクションが実行されます。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
IllegalStateRuntimeException
-JMSContext
がコンテナー管理されている場合 (注入された)JMSRuntimeException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージ配信の停止と再開に失敗した場合 JMSConsumer createConsumer(Destination destination)
JMSConsumer
を作成します。 クライアントは、JMSConsumer
オブジェクトを使用して、宛先に送信されたメッセージを受信します。
destination
- アクセスする Destination
JMSConsumer
オブジェクト。JMSRuntimeException
- 内部エラーが原因でセッションが JMSConsumer
の作成に失敗した場合。InvalidDestinationRuntimeException
- 無効な宛先が指定された場合。JMSConsumer createConsumer(Destination destination, StringSE messageSelector)
JMSConsumer
を作成します。 クライアントは、JMSConsumer
オブジェクトを使用して、宛先に送信されたメッセージを受信します。
destination
- アクセスする Destination
messageSelector
- メッセージセレクタ式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、JMSConsumer
のメッセージセレクターがないことを示します。JMSConsumer
オブジェクト。JMSRuntimeException
- 内部エラーが原因でセッションが JMSConsumer
の作成に失敗した場合。InvalidDestinationRuntimeException
- 無効な宛先が指定された場合。InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。JMSConsumer createConsumer(Destination destination, StringSE messageSelector, boolean noLocal)
noLocal
パラメーターを指定して、指定した宛先の JMSConsumer
を作成します。 クライアントは、JMSConsumer
オブジェクトを使用して、宛先に送信されたメッセージを受信します。
noLocal
引数は、宛先がトピックであり、JMSContext の接続がそのトピックへのメッセージの公開にも使用されている場合に使用されます。noLocal
が true に設定されている場合、JMSConsumer
は、自身の接続によってトピックに公開されたメッセージを受信しません。この引数のデフォルト値は false です。宛先がキューの場合、noLocal
を true に設定した場合の影響は指定されていません。
destination
- アクセスする Destination
messageSelector
- メッセージセレクタ式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、JMSConsumer
のメッセージセレクターがないことを示します。noLocal
- true で、宛先がトピックの場合、JMSConsumer
は、独自の接続によってトピックに公開されたメッセージを受信しません。JMSConsumer
オブジェクト。JMSRuntimeException
- 内部エラーが原因でセッションが JMSConsumer
の作成に失敗した場合。InvalidDestinationRuntimeException
- 無効な宛先が指定された場合。InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。Queue createQueue(StringSE queueName)
Queue
オブジェクトを作成します。 アプリケーションでプロバイダー固有のキュー名を使用すると、アプリケーションが移植不可能になる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された Queue
オブジェクトを検索することをお勧めします。
このメソッドは、キューの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理キューを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理キューを作成する方法を提供しません。物理キューの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なキューの作成です。これは、createTemporaryQueue
メソッドを使用して行われます。
queueName
- プロバイダー固有のキュー名 JMSRuntimeException
- 内部エラーのために Queue オブジェクトを作成できない場合 Topic createTopic(StringSE topicName)
Topic
オブジェクトを作成します。 アプリケーションでプロバイダー固有のトピック名を使用すると、アプリケーションが移植できなくなる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された Topic
オブジェクトを検索することをお勧めします。
このメソッドは、トピックの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理トピックを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理トピックを作成する方法を提供しません。物理トピックの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なトピックの作成です。これは、createTemporaryTopic
メソッドを使用して行われます。
topicName
- プロバイダー固有のトピック名 JMSRuntimeException
- 内部エラーのためにトピックオブジェクトを作成できない場合 JMSConsumer createDurableConsumer(Topic topic, StringSE name)
noLocal
値が false
の永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。
非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの JMSConsumer
。
非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSRuntimeException
がスローされます。
同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。
共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSRuntimeException
がスローされます。
同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 JMSConsumer
オブジェクト。InvalidDestinationRuntimeException
- 無効なトピックが指定された場合。IllegalStateRuntimeException
- クライアント識別子が設定されていない場合 JMSRuntimeException
-JMSConsumer
の作成に失敗した場合JMSConsumer createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
noLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。
非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの JMSConsumer
。
非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSRuntimeException
がスローされます。
同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。
noLocal
が true に設定されている場合、この JMSContext
の接続、同じクライアント ID を持つ他の接続を使用してトピックに公開されたメッセージは、永続サブスクリプションに追加されません。
共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSRuntimeException
がスローされます。
同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために TopicSubscriber
ではなく MessageConsumer
を返すことを除いて、対応する createDurableSubscriber
メソッドと同じです。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。noLocal
- true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。JMSConsumer
オブジェクト。InvalidDestinationRuntimeException
- 無効なトピックが指定された場合。InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。IllegalStateRuntimeException
- クライアント識別子が設定されていない場合 JMSRuntimeException
-JMSConsumer
の作成に失敗した場合JMSConsumer createSharedDurableConsumer(Topic topic, StringSE name)
永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント ID(設定されている場合)を持つ共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに JMSConsumer
を作成します。
共有永続サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在しているが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、これは次と同等です。古いものを購読解除(削除)して、新しいものを作成します。
共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSRuntimeException
は投げられます。
共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、JMSRuntimeException
がスローされます。
メッセージセレクターが指定されている場合、メッセージセレクター式に一致するプロパティを持つメッセージのみがサブスクリプションに追加されます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 JMSConsumer
オブジェクト。InvalidDestinationRuntimeException
- 無効なトピックが指定された場合。JMSRuntimeException
-MessageConsumer
の作成に失敗した場合JMSConsumer createSharedDurableConsumer(Topic topic, StringSE name, StringSE messageSelector)
永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)で共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに JMSConsumer
を作成します。
同じ名前とクライアント識別子(設定されている場合)で共有永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがない場合、これは同等です。古いものの購読を解除(削除)し、新しいものを作成します。
共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSRuntimeException
は投げられます。
共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、JMSRuntimeException
がスローされます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。JMSConsumer
オブジェクト。InvalidDestinationRuntimeException
- 無効なトピックが指定された場合。InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。JMSRuntimeException
-JMSConsumer
の作成に失敗した場合JMSConsumer createSharedConsumer(Topic topic, StringSE sharedSubscriptionName)
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存のサブスクリプションに JMSConsumer
を作成します。
非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有の非永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有の非永続サブスクリプションにコンシューマーを作成することを望むアプリケーションは、同じクライアント ID を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)で共有された非永続サブスクリプションがすでに存在するが、異なるトピックまたはメッセージセレクター値が指定されており、サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがある場合、JMSRuntimeException
がスローされます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする Topic
sharedSubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前 JMSConsumer
オブジェクト。JMSRuntimeException
- 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションと JMSContext
の作成に失敗した場合。InvalidDestinationRuntimeException
- 無効なトピックが指定された場合。InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。JMSConsumer createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector)
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存のサブスクリプションに JMSConsumer
を作成します。
非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有の非永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有の非永続サブスクリプションにコンシューマーを作成することを望むアプリケーションは、同じクライアント ID を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSRuntimeException
投げられます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする Topic
sharedSubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが、共有の非永続サブスクリプションに追加されます。null または空の文字列の値は、共有の非永続サブスクリプションにメッセージセレクターがないことを示します。JMSConsumer
オブジェクト。JMSRuntimeException
- 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションと JMSConsumer
の作成に失敗した場合。InvalidDestinationRuntimeException
- 無効なトピックが指定された場合。InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。QueueBrowser createBrowser(Queue queue)
QueueBrowser
オブジェクトを作成して、指定されたキューのメッセージを確認します。queue
- アクセスする queue
QueueBrowser
オブジェクト。JMSRuntimeException
- 内部エラーのためにセッションがブラウザーの作成に失敗した場合。InvalidDestinationRuntimeException
- 無効な宛先が指定された場合 QueueBrowser createBrowser(Queue queue, StringSE messageSelector)
QueueBrowser
オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。queue
- アクセスする queue
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。QueueBrowser
オブジェクト。JMSRuntimeException
- 内部エラーのためにセッションがブラウザーの作成に失敗した場合。InvalidDestinationRuntimeException
- 無効な宛先が指定された場合 InvalidSelectorRuntimeException
- メッセージセレクタが無効な場合。TemporaryQueue createTemporaryQueue()
TemporaryQueue
オブジェクトを作成します。以前に削除されない限り、その存続期間は JMSContext の Connection
の存続期間になります。JMSRuntimeException
- 内部エラーのためにセッションが一時キューの作成に失敗した場合。TemporaryTopic createTemporaryTopic()
TemporaryTopic
オブジェクトを作成します。以前に削除されない限り、その存続期間は JMSContext の Connection
の存続期間になります。JMSRuntimeException
- 内部エラーのためにセッションが一時トピックの作成に失敗した場合。void unsubscribe(StringSE name)
このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。
永続サブスクリプションは、クライアントによって指定された名前と、設定されている場合はクライアント識別子によって識別されます。永続サブスクリプションの作成時にクライアント識別子が設定されていた場合、このメソッドを使用して永続サブスクリプションを削除するクライアントは、同じクライアント識別子を使用する必要があります。
そのサブスクリプションにアクティブな(閉じられていない)コンシューマーがある間、または消費されたメッセージが保留中のトランザクションの一部であるか、セッションで確認されていないときに、クライアントが永続サブスクリプションを削除するのは誤りです。
アクティブなコンシューマーが JMSConsumer
で表されている場合、そのオブジェクトまたはオブジェクトの作成に使用された JMSContext
のいずれかで close
を呼び出すと、コンシューマーが非アクティブになり、サブスクリプションを削除できるようになります。
アクティブなコンシューマーが JMSContext
で setMessageListener
を呼び出すことによって作成された場合、JMSContext
で close
を呼び出すと、コンシューマーが非アクティブになり、サブスクリプションを削除できるようになります。
アクティブなコンシューマーが MessageConsumer
または TopicSubscriber
で表されている場合、そのオブジェクトまたはオブジェクトの作成に使用された Session
または Connection
で close
を呼び出すと、コンシューマーが非アクティブになり、サブスクリプションを削除できるようになります。
name
- このサブスクリプションを識別するために使用される名前 JMSRuntimeException
- 内部エラーのためにセッションが永続サブスクリプションへのサブスクライブに失敗した場合。InvalidDestinationRuntimeException
- 無効なサブスクリプション名が指定された場合。void acknowledge()
このメソッドは、セッションの確認応答モードが CLIENT_ACKNOWLEDGE の場合に使用します。セッションが処理されているか、確認モードが AUTO_ACKNOWLEDGE または DUPS_OK_ACKNOWLEDGE の場合、このメソッドを呼び出しても効果はありません。
このメソッドは、Message
の acknowledge
メソッドと同じ動作をします。クライアントは、消費された各メッセージを個別に確認することも、アプリケーション定義のグループとしてメッセージを確認することを選択することもできます。どちらの場合も、これら 2 つの方法のどちらを使用しても違いはありません。
受信したが確認応答されていないメッセージは、再配信される場合があります。
JMSContext
がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException
がスローされます。
IllegalStateRuntimeException
-JMSContext
が閉じている場合。JMSContext
がコンテナー管理されている場合 (注入された)JMSRuntimeException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージの確認に失敗した場合 Session.CLIENT_ACKNOWLEDGE
, Message.acknowledge()
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.