public interface Session extends RunnableSE, AutoCloseableSE
Session
オブジェクトは、メッセージを生成および消費するためのシングルスレッドコンテキストです。Java 仮想マシン(JVM)の外部にプロバイダーリソースを割り当てる場合がありますが、軽量の Jakarta Messaging オブジェクトと見なされます。セッションにはいくつかの目的があります。
TemporaryTopics
および TemporaryQueues
のファクトリです。Queue
または Topic
オブジェクトを作成する方法を提供します。QueueBrowsers
のファクトリです。セッションは、複数のメッセージのプロデューサーとコンシューマーを作成および処理できます。
典型的な使用箇所の 1 つは、メッセージが到着するまで、スレッドを同期 MessageConsumer
でブロックすることです。次に、スレッドは Session
の MessageProducer
の 1 つ以上を使用できます。
クライアントが 1 つのスレッドにメッセージを生成させ、他のスレッドがメッセージを消費させたい場合、クライアントはその生成スレッドに別のセッションを使用する必要があります。
接続が開始されると、1 つ以上の登録済みメッセージリスナーとのセッションは、メッセージを配信する制御スレッド専用になります。クライアントコードがこのセッションまたは別の制御スレッドからの構成オブジェクトを使用するのは誤りです。この規則の唯一の例外は、セッションまたはメッセージコンシューマー close
メソッドの使用です。
ほとんどのクライアントは、作業を自然にセッションに分割するのが簡単であるはずです。このモデルを使用すると、同時開始の必要性が高まるにつれて、クライアントはメッセージ処理の複雑さを単純かつ段階的に追加できます。
close
メソッドは、他のセッションメソッドが別のスレッドで実行されている間に呼び出すことができる唯一のセッションメソッドです。
セッションはトランザクションとして指定できます。各トランザクションセッションは、単一の一連のトランザクションをサポートします。各トランザクションは、一連のメッセージ送信と一連のメッセージ受信をアトミックな作業単位にグループ化します。実際、トランザクションはセッションの入力メッセージストリームと出力メッセージストリームを一連のアトミックユニットに編成します。トランザクションがコミットされると、入力のアトミック単位が確認され、関連する出力のアトミック単位が送信されます。トランザクションのロールバックが行われると、トランザクションの送信メッセージが破棄され、セッションの入力が自動的に回復されます。
トランザクションの入力ユニットと出力ユニットの内容は、セッションの現在のトランザクション内で生成および消費されたメッセージです。
トランザクションは、セッションの commit
メソッドまたはセッションの rollback
メソッドのいずれかを使用して完了します。セッションの現在のトランザクションの補完は、自動的に次を開始します。その結果、トランザクションセッションには、常に作業が行われる現在のトランザクションがあります。
Java Transaction Service(JTS)または他のトランザクションモニターを使用して、セッションのトランザクションを他のリソース(データベース、他の Jakarta Messaging セッションなど)のトランザクションと組み合わせることができます。Java 分散トランザクションは Java Transaction API(JTA)を介して制御されるため、このコンテキストでのセッションの commit
および rollback
メソッドの使用は禁止されています。
Jakarta Messaging API は JTA のサポートを必要としません。ただし、プロバイダーがこのサポートを提供する方法を定義します。
Jakarta Messaging クライアントが分散トランザクションを直接処理することも可能ですが、多くの Jakarta Messaging クライアントがこれを実行することはほとんどありません。Jakarta Messaging API での JTA のサポートは、Jakarta Messaging API をアプリケーションサーバー製品に統合するシステムベンダーを対象としています。
QueueSession
, TopicSession
, XASession
修飾子と型 | フィールドと説明 |
---|---|
static int | AUTO_ACKNOWLEDGE この確認モードでは、セッションが receive への呼び出しから正常に戻ったとき、またはメッセージを処理するためにセッションが呼び出したメッセージリスナーが戻ったときに、クライアントのメッセージ受信を自動的に確認します。 |
static int | CLIENT_ACKNOWLEDGE この確認モードでは、クライアントはメッセージの acknowledge メソッドを呼び出して、消費されたメッセージを確認します。 |
static int | DUPS_OK_ACKNOWLEDGE この確認モードは、メッセージ配信の遅延確認をセッションに指示します。 |
static int | SESSION_TRANSACTED この値は、セッションがローカルトランザクションを使用するように指定するために、 Connection オブジェクトのメソッド createSession(int sessionMode) に引数として渡すことができます。 |
修飾子と型 | メソッドと説明 |
---|---|
void | close() セッションを閉じます。 |
void | commit() このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。 |
QueueBrowser | createBrowser(Queue queue) QueueBrowser オブジェクトを作成して、指定されたキューのメッセージを確認します。 |
QueueBrowser | createBrowser(Queue queue, StringSE messageSelector) QueueBrowser オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。 |
BytesMessage | createBytesMessage() BytesMessage オブジェクトを作成します。 |
MessageConsumer | createConsumer(Destination destination) 指定された宛先の MessageConsumer を作成します。 |
MessageConsumer | createConsumer(Destination destination, StringSE messageSelector) メッセージセレクターを使用して、指定した宛先の MessageConsumer を作成します。 |
MessageConsumer | createConsumer(Destination destination, StringSE messageSelector, boolean noLocal) メッセージセレクターと noLocal パラメーターを指定して、指定した宛先の MessageConsumer を作成します。 |
MessageConsumer | createDurableConsumer(Topic topic, StringSE name) 指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。 |
MessageConsumer | createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。 |
TopicSubscriber | createDurableSubscriber(Topic topic, StringSE name) 指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。 |
TopicSubscriber | createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。 |
MapMessage | createMapMessage() MapMessage オブジェクトを作成します。 |
Message | createMessage() Message オブジェクトを作成します。 |
ObjectMessage | createObjectMessage() ObjectMessage オブジェクトを作成します。 |
ObjectMessage | createObjectMessage(SerializableSE object) 初期化された ObjectMessage オブジェクトを作成します。 |
MessageProducer | createProducer(Destination destination) 指定された宛先にメッセージを送信するための MessageProducer を作成します。 |
Queue | createQueue(StringSE queueName) 指定されたプロバイダー固有のキュー名をカプセル化する Queue オブジェクトを作成します。 |
MessageConsumer | createSharedConsumer(Topic topic, StringSE sharedSubscriptionName) 指定されたトピックに指定された名前で共有の非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。 |
MessageConsumer | createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector) メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。 |
MessageConsumer | createSharedDurableConsumer(Topic topic, StringSE name) メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。 |
MessageConsumer | 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 オブジェクトを作成します。 |
int | getAcknowledgeMode() セッションの確認応答モードを返します。 |
MessageListener | getMessageListener() セッションの識別されたメッセージリスナーを返します(オプション)。 |
boolean | getTransacted() セッションがトランザクションモードであるかどうかを示します。 |
void | recover() このセッションでのメッセージ配信を停止し、最も古い未確認のメッセージでメッセージ配信を再開します。 |
void | rollback() このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。 |
void | run() オプションの操作。通常の Jakarta Messaging クライアントではなく、アプリケーションサーバーでのみ使用することを目的としています。 |
void | setMessageListener(MessageListener listener) セッションの識別メッセージリスナーを設定します(オプション)。 |
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
Connection
オブジェクトのメソッド createSession(int sessionMode)
に引数として渡すことができます。 この値は、セッションがローカルトランザクションを使用している場合、メソッド createSession(int sessionMode)
またはメソッド createSession(boolean transacted, int acknowledgeMode)
のどちらを呼び出してセッションが作成されたかに関係なく、メソッド getAcknowledgeMode
から返されます。
BytesMessage createBytesMessage() throws JMSException
BytesMessage
オブジェクトを作成します。BytesMessage
オブジェクトは、未解釈のバイトのストリームを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
BytesMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。MapMessage createMapMessage() throws JMSException
MapMessage
オブジェクトを作成します。MapMessage
オブジェクトは、名前と値のペアの自己定義セットを送信するために使用されます。ここで、名前は String
オブジェクトであり、値は Java プログラミング言語のプリミティブ値です。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
MapMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。Message createMessage() throws JMSException
Message
オブジェクトを作成します。Message
インターフェースは、すべての Jakarta Messaging メッセージのルートインターフェースです。Message
オブジェクトは、すべての標準メッセージヘッダー情報を保持します。ヘッダー情報のみを含むメッセージで十分な場合に送信できます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
Message
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。ObjectMessage createObjectMessage() throws JMSException
ObjectMessage
オブジェクトを作成します。ObjectMessage
オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
ObjectMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。ObjectMessage createObjectMessage(SerializableSE object) throws JMSException
ObjectMessage
オブジェクトを作成します。ObjectMessage
オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
object
- このメッセージを初期化するために使用するオブジェクト ObjectMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。StreamMessage createStreamMessage() throws JMSException
StreamMessage
オブジェクトを作成します。StreamMessage
オブジェクトは、Java プログラミング言語でプリミティブ値の自己定義ストリームを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
StreamMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。TextMessage createTextMessage() throws JMSException
TextMessage
オブジェクトを作成します。TextMessage
オブジェクトは、String
オブジェクトを含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
TextMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。TextMessage createTextMessage(StringSE text) throws JMSException
TextMessage
オブジェクトを作成します。TextMessage
オブジェクトは、String
を含むメッセージを送信するために使用されます。 返されるメッセージオブジェクトは、Session
または JMSContext
を使用して送信できます。作成に使用された JMSContext
を使用して送信されることに限定されません。
返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
text
- このメッセージを初期化するために使用される文字列 TextMessage
オブジェクト。JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。boolean getTransacted() throws JMSException
JMSException
- Jakarta Messaging プロバイダーが内部エラーのためにトランザクションモードを返せなかった場合 int getAcknowledgeMode() throws JMSException
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーが確認応答モードを返せなかった場合。Connection.createSession(boolean, int)
void commit() throws JMSException
この Session の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
CompletionListener コールバックメソッドは、独自の Session で commit を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
IllegalStateException
-JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがトランザクションのコミットに失敗した場合。TransactionRolledBackException
- コミット中に何らかの内部エラーが発生してトランザクションがロールバックされた場合。void rollback() throws JMSException
この Session の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
CompletionListener コールバックメソッドは、独自の Session で commit を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
IllegalStateException
-JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがトランザクションのロールバックに失敗した場合。void close() throws JMSException
プロバイダーは JVM の外部のセッションに代わって一部のリソースを割り当てる可能性があるため、クライアントは必要のないときにリソースを閉じる必要があります。これらのリソースを最終的に再利用するためにガベージコレクションに依存することは、十分なタイミングではない場合があります。
閉じられたセッションのプロデューサーとコンシューマーを閉じる必要はありません。
この呼び出しは、進行中の receive
呼び出しまたはメッセージリスナーが完了するまでブロックされます。ブロックされたメッセージコンシューマーの receive
呼び出しは、このセッションが閉じられると null
を返します。
ただし、close メソッドが独自の Session
でメッセージリスナーから呼び出された場合、失敗して jakarta.jms.IllegalStateException
をスローするか、成功して Session
を閉じ、保留中の受信呼び出しが完了するまでブロックします。クローズが成功し、Session
の確認応答モードが AUTO_ACKNOWLEDGE
に設定されている場合、onMessage
呼び出しが完了すると、現在のメッセージは引き続き自動的に確認応答されます。
この場合、2 つの代替動作が許可されているため、移植性がないため、アプリケーションは独自の Session
でメッセージリスナーから close を呼び出すことを避ける必要があります。
この Session の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
誤解を避けるために、close
が呼び出されたときにこのセッションの接続の例外リスナーが実行されている場合、close
呼び出しが、例外リスナーが戻るまで待機してから戻る必要はありません。
トランザクションセッションを閉じると、進行中のトランザクションをロールバックする必要があります。
このメソッドは、同時に呼び出すことができる唯一の Session
メソッドです。
CompletionListener コールバックメソッドは、独自の Session で close を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
閉じたセッションで他の Session
メソッドを呼び出すと、IllegalStateException
がスローされます。閉じたセッションを閉じても例外はスローされません。
AutoCloseableSE
の closeSE
IllegalStateException
-JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがセッションを閉じることができない場合。void recover() throws JMSException
すべてのコンシューマーはメッセージをシリアル順に配信します。受信したメッセージを確認すると、クライアントに配信されたすべてのメッセージが自動的に確認されます。
セッションを再開すると、次のアクションが実行されます。
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ配信の停止と再開に失敗した場合 IllegalStateException
- メソッドがトランザクションセッションによって呼び出された場合。MessageListener getMessageListener() throws JMSException
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSException
がスローされる可能性があります。
JMSException
- Jakarta Messaging プロバイダーが次のいずれかの理由でセッションの識別されたメッセージリスナーの取得に失敗した場合:setMessageListener(jakarta.jms.MessageListener)
, ServerSessionPool
, ServerSession
void setMessageListener(MessageListener listener) throws JMSException
識別メッセージリスナーが設定されている場合、セッションで他の形式のメッセージ受信を使用することはできません。ただし、メッセージ送信のすべての形式は引き続きサポートされています。
これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSException
がスローされる可能性があります。
listener
- このセッションに関連付けるメッセージリスナー JMSException
- Jakarta Messaging プロバイダーが次のいずれかの理由でセッションの識別メッセージリスナーの設定に失敗した場合:getMessageListener()
, ServerSessionPool
, ServerSession
void run()
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSRuntimeException
がスローされる可能性があります。
RunnableSE
の runSE
JMSRuntimeException
- このメソッドが Jakarta EE Web または EJB アプリケーションで呼び出された場合 (この場合、例外がスローされることは保証されていませんが)ServerSession
MessageProducer createProducer(Destination destination) throws JMSException
MessageProducer
を作成します。 クライアントは MessageProducer
オブジェクトを使用して宛先にメッセージを送信します。Queue
と Topic
はどちらも Destination
から継承するため、これらを宛先パラメーターで使用して MessageProducer
オブジェクトを作成できます。
destination
- 送信先の Destination
。これが指定された宛先を持たないプロデューサーの場合は nullMessageProducer
。JMSException
- 内部エラーのためにセッションが MessageProducer の作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。MessageConsumer createConsumer(Destination destination) throws JMSException
MessageConsumer
を作成します。Queue
と Topic
はどちらも Destination
から継承するため、これらを宛先パラメーターで使用して MessageConsumer
を作成できます。destination
- アクセスする Destination
MessageConsumer
。JMSException
- 内部エラーのためにセッションがコンシューマーの作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。MessageConsumer createConsumer(Destination destination, StringSE messageSelector) throws JMSException
MessageConsumer
を作成します。Queue
と Topic
はどちらも Destination
から継承するため、これらを宛先パラメーターで使用して MessageConsumer
を作成できます。 クライアントは、MessageConsumer
オブジェクトを使用して、宛先に送信されたメッセージを受信します。
destination
- アクセスする Destination
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。MessageConsumer
。JMSException
- 内部エラーのためにセッションが MessageConsumer の作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。MessageConsumer createConsumer(Destination destination, StringSE messageSelector, boolean noLocal) throws JMSException
noLocal
パラメーターを指定して、指定した宛先の MessageConsumer
を作成します。Queue
と Topic
はどちらも Destination
を継承しているため、これらを宛先パラメーターで使用して MessageConsumer
を作成できます。
クライアントは、MessageConsumer
オブジェクトを使用して、宛先にパブリッシュされたメッセージを受信します。
noLocal
引数は、宛先がトピックであり、セッションの接続がそのトピックへのメッセージのパブリッシュにも使用されている場合に使用されます。noLocal
が true に設定されている場合、MessageConsumer
は独自の接続によってトピックに公開されたメッセージを受信しません。この引数のデフォルト値は false です。宛先がキューの場合、noLocal
を true に設定した場合の効果は指定されていません。
destination
- アクセスする Destination
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。noLocal
- -true で、宛先がトピックの場合、MessageConsumer
は独自の接続によってトピックに公開されたメッセージを受信しません。MessageConsumer
。JMSException
- 内部エラーのためにセッションが MessageConsumer の作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。MessageConsumer createSharedConsumer(Topic topic, StringSE sharedSubscriptionName) throws JMSException
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターの値が指定されている場合、このメソッドは既存のサブスクリプションに MessageConsumer
を作成します。
非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有の非永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有の非永続サブスクリプションにコンシューマーを作成することを望むアプリケーションは、同じクライアント ID を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSException
投げられます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする Topic
sharedSubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前 JMSException
- 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションと MessageConsumer
の作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。MessageConsumer createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector) throws JMSException
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存のサブスクリプションに MessageConsumer
を作成します。
非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有の非永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有の非永続サブスクリプションにコンシューマーを作成することを望むアプリケーションは、同じクライアント ID を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSException
投げられます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする Topic
sharedSubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが、共有の非永続サブスクリプションに追加されます。null または空の文字列の値は、共有の非永続サブスクリプションにメッセージセレクターがないことを示します。JMSException
- 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションと MessageConsumer
の作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。Queue createQueue(StringSE queueName) throws JMSException
Queue
オブジェクトを作成します。 アプリケーションでプロバイダー固有のキュー名を使用すると、アプリケーションが移植不可能になる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された Queue
オブジェクトを検索することをお勧めします。
このメソッドは、キューの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理キューを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理キューを作成する方法を提供しません。物理キューの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なキューの作成です。これは、createTemporaryQueue
メソッドを使用して行われます。
queueName
- プロバイダー固有のキュー名 JMSException
- 内部エラーのために Queue オブジェクトを作成できない場合 Topic createTopic(StringSE topicName) throws JMSException
Topic
オブジェクトを作成します。 アプリケーションでプロバイダー固有のトピック名を使用すると、アプリケーションが移植できなくなる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された Topic
オブジェクトを検索することをお勧めします。
このメソッドは、トピックの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理トピックを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理トピックを作成する方法を提供しません。物理トピックの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なトピックの作成です。これは、createTemporaryTopic
メソッドを使用して行われます。
topicName
- プロバイダー固有のトピック名 JMSException
- 内部エラーのためにトピックオブジェクトを作成できない場合 TopicSubscriber createDurableSubscriber(Topic topic, StringSE name) throws JMSException
noLocal
値が false
の永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。
非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの TopicSubscriber
。
非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSException
がスローされます。
同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。
共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSException
がスローされます。
同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために MessageConsumer
ではなく TopicSubscriber
を返すことを除いて、対応する createDurableConsumer
メソッドと同じです。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 InvalidDestinationException
- 無効なトピックが指定された場合。IllegalStateException
- クライアント識別子が設定されていない場合 JMSException
-TopicSubscriber
の作成に失敗した場合TopicSubscriber createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) throws JMSException
noLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。
非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの TopicSubscriber
。
非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSException
がスローされます。
同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。
noLocal
が true に設定されている場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。
共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSException
がスローされます。
同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために MessageConsumer
ではなく TopicSubscriber
を返すことを除いて、対応する createDurableConsumer
メソッドと同じです。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。noLocal
- true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。IllegalStateException
- クライアント識別子が設定されていない場合 JMSException
-TopicSubscriber
の作成に失敗した場合MessageConsumer createDurableConsumer(Topic topic, StringSE name) throws JMSException
noLocal
値が false
の永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。
非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの MessageConsumer
。
非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSException
がスローされます。
同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。
共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSException
がスローされます。
同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために TopicSubscriber
ではなく MessageConsumer
を返すことを除いて、対応する createDurableSubscriber
メソッドと同じです。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 InvalidDestinationException
- 無効なトピックが指定された場合。IllegalStateException
- クライアント識別子が設定されていない場合 JMSException
-MessageConsumer
の作成に失敗した場合MessageConsumer createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) throws JMSException
noLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。
非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの MessageConsumer
。
非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSException
がスローされます。
同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。
noLocal
が true に設定されている場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。
共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSException
がスローされます。
同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために TopicSubscriber
ではなく MessageConsumer
を返すことを除いて、対応する createDurableSubscriber
メソッドと同じです。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。noLocal
- true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。IllegalStateException
- クライアント識別子が設定されていない場合 JMSException
-MessageConsumer
の作成に失敗した場合MessageConsumer createSharedDurableConsumer(Topic topic, StringSE name) throws JMSException
noLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしで永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント ID(設定されている場合)を持つ共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに MessageConsumer
を作成します。
共有永続サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在しているが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、これは次と同等です。古いものを購読解除(削除)して、新しいものを作成します。
共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSException
は投げられます。
共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、JMSException
がスローされます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 JMSException
-MessageConsumer
の作成に失敗した場合InvalidDestinationException
- 無効なトピックが指定された場合。MessageConsumer createSharedDurableConsumer(Topic topic, StringSE name, StringSE messageSelector) throws JMSException
永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。
このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer
または JMSConsumer
オブジェクトを意味します。
共有永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント ID(設定されている場合)を持つ共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに MessageConsumer
を作成します。
共有永続サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在しているが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、これは次と同等です。古いものを購読解除(削除)して、新しいものを作成します。
共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSException
は投げられます。
共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、JMSException
がスローされます。
永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
topic
- サブスクライブする非一時的な Topic
name
- このサブスクリプションを識別するために使用される名前 messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。JMSException
-MessageConsumer
の作成に失敗した場合InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。QueueBrowser createBrowser(Queue queue) throws JMSException
QueueBrowser
オブジェクトを作成して、指定されたキューのメッセージを確認します。queue
- アクセスする queue
QueueBrowser
オブジェクト。JMSException
- 内部エラーのためにセッションがブラウザーの作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合 QueueBrowser createBrowser(Queue queue, StringSE messageSelector) throws JMSException
QueueBrowser
オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。queue
- アクセスする queue
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。QueueBrowser
オブジェクト。JMSException
- 内部エラーのためにセッションがブラウザーの作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合 InvalidSelectorException
- メッセージセレクタが無効な場合。TemporaryQueue createTemporaryQueue() throws JMSException
TemporaryQueue
オブジェクトを作成します。それが以前に削除されない限り、その存続期間は Connection
の存続期間になります。JMSException
- 内部エラーのためにセッションが一時キューの作成に失敗した場合。TemporaryTopic createTemporaryTopic() throws JMSException
TemporaryTopic
オブジェクトを作成します。それが以前に削除されない限り、その存続期間は Connection
の存続期間になります。JMSException
- 内部エラーのためにセッションが一時トピックの作成に失敗した場合。void unsubscribe(StringSE name) throws JMSException
このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。
永続サブスクリプションは、クライアントによって指定された名前と、設定されている場合はクライアント識別子によって識別されます。永続サブスクリプションの作成時にクライアント識別子が設定されていた場合、このメソッドを使用して永続サブスクリプションを削除するクライアントは、同じクライアント識別子を使用する必要があります。
サブスクリプションにアクティブな(閉じていない)コンシューマーが存在する場合、または消費されたメッセージが保留中のトランザクションの一部であるか、セッションで確認されていない場合、クライアントが永続サブスクリプションを削除するのは誤りです。
name
- このサブスクリプションを識別するために使用される名前 JMSException
- 内部エラーのためにセッションが永続サブスクリプションへのサブスクライブに失敗した場合。InvalidDestinationException
- 無効なサブスクリプション名が指定された場合。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.