インターフェース TopicSession
- すべてのスーパーインターフェース:
AutoCloseableSE
、RunnableSE
、Session
public interface TopicSession extends Session
TopicSession
オブジェクトは、TopicPublisher
、TopicSubscriber
、TemporaryTopic
オブジェクトを作成するためのメソッドを提供します。また、クライアントの永続サブスクライバーを削除する方法も提供します。TopicSession
は、Pub/Sub 固有のオブジェクトを作成するために使用されます。一般に、Session
オブジェクトを使用し、TopicSession
は既存のコードをサポートするためにのみ使用します。Session
オブジェクトを使用すると、プログラミングモデルが簡素化され、2 つのメッセージングドメイン間でトランザクションを使用できるようになります。TopicSession
を使用して、ポイントツーポイントドメインに固有のオブジェクトを作成することはできません。次のメソッドはSession
を継承しますが、TopicSession
から使用する場合は、IllegalStateException
をスローする必要があります。createBrowser
createQueue
createTemporaryQueue
- 導入:
- JMS 1.0
- バージョン:
- Jakarta Messaging 2.0
- 関連事項:
Session
,Connection.createSession(boolean, int)
,TopicConnection.createTopicSession(boolean, int)
,XATopicSession.getTopicSession()
フィールドサマリー
インターフェース jakarta.jms.Session から継承されたフィールド
AUTO_ACKNOWLEDGE, CLIENT_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE, SESSION_TRANSACTED
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 TopicSubscriber
createDurableSubscriber(Topic topic, StringSE name)
指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。TopicSubscriber
createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。TopicPublisher
createPublisher(Topic topic)
指定されたトピックのパブリッシャーを作成します。TopicSubscriber
createSubscriber(Topic topic)
指定されたトピックへの非永続サブスクライバーを作成します。TopicSubscriber
createSubscriber(Topic topic, StringSE messageSelector, boolean noLocal)
メッセージセレクターを使用するか、独自の接続によって公開されたメッセージをトピックに配信するかどうかを指定して、指定されたトピックへの非永続サブスクライバーを作成します。TemporaryTopic
createTemporaryTopic()
TemporaryTopic
オブジェクトを作成します。Topic
createTopic(StringSE topicName)
Topic
名を指定してトピック ID を作成します。void
unsubscribe(StringSE name)
クライアントによって作成された永続サブスクリプションを登録解除します。インターフェース jakarta.jms.Session から継承されたメソッド
close, commit, createBrowser, createBrowser, createBytesMessage, createConsumer, createConsumer, createConsumer, createDurableConsumer, createDurableConsumer, createMapMessage, createMessage, createObjectMessage, createObjectMessage, createProducer, createQueue, createSharedConsumer, createSharedConsumer, createSharedDurableConsumer, createSharedDurableConsumer, createStreamMessage, createTemporaryQueue, createTextMessage, createTextMessage, getAcknowledgeMode, getMessageListener, getTransacted, recover, rollback, run, setMessageListener
メソッドの詳細
createTopic
Topic createTopic(StringSE topicName) throws JMSException
Topic
名を指定してトピック ID を作成します。この機能は、クライアントがトピック ID を動的に操作する必要があるまれなケースのために提供されています。これにより、プロバイダー固有の名前でトピック ID を作成できます。この機能に依存するクライアントは移植性がありません。
この方法は、物理的なトピックを作成するためのものではないことに注意してください。トピックの物理的な作成は管理タスクであり、Jakarta Messaging API によって開始されることはありません。唯一の例外は、一時的なトピックの作成です。これは、
createTemporaryTopic
メソッドを使用して実行されます。- 次で指定:
- インターフェース
Session
のcreateTopic
- パラメーター:
topicName
- このTopic
の名前- 戻り値:
- 指定された名前の
Topic
- 例外:
JMSException
- 内部エラーが原因でセッションがトピックの作成に失敗した場合。
createSubscriber
TopicSubscriber createSubscriber(Topic topic) throws JMSException
指定されたトピックへの非永続サブスクライバーを作成します。クライアントは
TopicSubscriber
オブジェクトを使用して、トピックに発行されたメッセージを受信します。通常の
TopicSubscriber
オブジェクトは耐久性がありません。彼らはアクティブな間に公開されたメッセージのみを受け取ります。場合によっては、接続がトピックのパブリッシュとサブスクライブの両方を行うことがあります。サブスクライバーの
NoLocal
属性を使用すると、サブスクライバーは、自身の接続によって発行されたメッセージの配信を禁止できます。この属性のデフォルト値は false です。- パラメーター:
topic
- サブスクライブするTopic
- 戻り値:
- 指定されたトピックへの非永続サブスクライバー。
- 例外:
JMSException
- 内部エラーが原因でセッションがサブスクライバーの作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。
createSubscriber
TopicSubscriber createSubscriber(Topic topic, StringSE messageSelector, boolean noLocal) throws JMSException
メッセージセレクターを使用するか、独自の接続によって公開されたメッセージをトピックに配信するかどうかを指定して、指定されたトピックへの非永続サブスクライバーを作成します。クライアントは
TopicSubscriber
オブジェクトを使用して、トピックに発行されたメッセージを受信します。通常の
TopicSubscriber
オブジェクトは耐久性がありません。彼らはアクティブな間に公開されたメッセージのみを受け取ります。サブスクライバーのメッセージセレクターによってフィルターで除外されたメッセージは、サブスクライバーに配信されることはありません。サブスクライバーの観点からは、それらは存在しません。
場合によっては、接続がトピックのパブリッシュとサブスクライブの両方を行うことがあります。サブスクライバーの
NoLocal
属性を使用すると、サブスクライバーは、自身の接続によって発行されたメッセージの配信を禁止できます。この属性のデフォルト値は false です。- パラメーター:
topic
- サブスクライブするTopic
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。noLocal
- 設定されている場合、独自の接続によって公開されたメッセージの配信を禁止します- 戻り値:
- 指定されたトピックへの非永続サブスクライバー。
- 例外:
JMSException
- 内部エラーが原因でセッションがサブスクライバーの作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。
createDurableSubscriber
TopicSubscriber createDurableSubscriber(Topic topic, StringSE name) throws JMSException
指定されたトピックに非共有の永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしでnoLocal
値がfalse
の永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。この方法は、非共有の永続サブスクリプションでのみ使用できます。この方法を使用して作成された永続サブスクリプションはすべて非共有になります。これは、サブスクリプションのアクティブな(つまり閉じられていない)コンシューマーが一度に 1 つだけ存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要のあるクライアント識別子によって識別されます。その後、その非共有の永続サブスクリプションでコンシューマーを作成することを希望するアプリケーションは、同じクライアント識別子を使用する必要があります。
共有されていない永続サブスクリプションが同じ名前とクライアント識別子、同じトピックとメッセージセレクターですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションからの消費されたメッセージがまだ含まれていない場合保留中のトランザクション、またはセッションでまだ確認されていない場合、このメソッドは既存の永続サブスクリプションに
TopicSubscriber
を作成します。共有されていない永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがある場合、またはそのサブスクリプションからの消費されたメッセージがまだ保留中のトランザクションの一部であるか、まだ確認されていない場合セッションでは、
JMSException
がスローされます。同じ名前とクライアント識別子でトピックが異なる非共有の永続サブスクリプションがすでに存在し、メッセージセレクターまたは
noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションはまだ保留中のトランザクションの一部であるか、セッションでまだ確認されていない場合、永続サブスクリプションは削除され、新しいサブスクリプションが作成されます。共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、
JMSException
がスローされます。同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために
MessageConsumer
ではなくTopicSubscriber
を返すことを除いて、対応するcreateDurableConsumer
メソッドと同じです。- 次で指定:
- インターフェース
Session
のcreateDurableSubscriber
- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前- 戻り値:
- 指定されたトピックの非共有永続サブスクリプション。
- 例外:
InvalidDestinationException
- 無効なトピックが指定された場合。JMSException
-- 内部エラーのためにセッションが非共有の永続サブスクリプションと
TopicSubscriber
の作成に失敗した場合 - クライアント識別子が設定されていない場合
- 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
- 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
- 内部エラーのためにセッションが非共有の永続サブスクリプションと
createDurableSubscriber
TopicSubscriber createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) throws JMSException
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。この方法は、非共有の永続サブスクリプションでのみ使用できます。この方法を使用して作成された永続サブスクリプションはすべて非共有になります。これは、サブスクリプションのアクティブな(つまり閉じられていない)コンシューマーが一度に 1 つだけ存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要のあるクライアント識別子によって識別されます。その後、その非共有の永続サブスクリプションでコンシューマーを作成することを希望するアプリケーションは、同じクライアント識別子を使用する必要があります。
共有されていない永続サブスクリプションが同じ名前とクライアント識別子、同じトピックとメッセージセレクターですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションからの消費されたメッセージがまだ含まれていない場合保留中のトランザクション、またはセッションでまだ確認されていない場合、このメソッドは既存の永続サブスクリプションに
TopicSubscriber
を作成します。共有されていない永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがある場合、またはそのサブスクリプションからの消費されたメッセージがまだ保留中のトランザクションの一部であるか、まだ確認されていない場合セッションでは、
JMSException
がスローされます。同じ名前とクライアント識別子でトピックが異なる非共有の永続サブスクリプションがすでに存在し、メッセージセレクターまたは
noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションはまだ保留中のトランザクションの一部であるか、セッションでまだ確認されていない場合、永続サブスクリプションは削除され、新しいサブスクリプションが作成されます。共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、
JMSException
がスローされます。noLocal
が true に設定されている場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために
MessageConsumer
ではなくTopicSubscriber
を返すことを除いて、対応するcreateDurableConsumer
メソッドと同じです。- 次で指定:
- インターフェース
Session
のcreateDurableSubscriber
- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。noLocal
- true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。- 戻り値:
- 指定されたトピックの非共有永続サブスクリプション。
- 例外:
InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。JMSException
-- 内部エラーのためにセッションが非共有の永続サブスクリプションと
TopicSubscriber
の作成に失敗した場合 - クライアント識別子が設定されていない場合
- 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
- 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
- 内部エラーのためにセッションが非共有の永続サブスクリプションと
createPublisher
TopicPublisher createPublisher(Topic topic) throws JMSException
指定されたトピックのパブリッシャーを作成します。クライアントは
TopicPublisher
オブジェクトを使用して、トピックに関するメッセージを公開します。クライアントがトピックにTopicPublisher
を作成するたびに、以前に送信したメッセージと順序関連のないメッセージの新しいシーケンスを定義します。- パラメーター:
topic
- 公開するTopic
、またはこれが不明なプロデューサーの場合は null- 戻り値:
- 指定されたトピックの発行者。
- 例外:
JMSException
- 内部エラーが原因でセッションがパブリッシャーの作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。
createTemporaryTopic
TemporaryTopic createTemporaryTopic() throws JMSException
TemporaryTopic
オブジェクトを作成します。それが以前に削除されない限り、その存続期間はTopicConnection
の存続期間になります。- 次で指定:
- インターフェース
Session
のcreateTemporaryTopic
- 戻り値:
- 一時的なトピックのアイデンティティ
- 例外:
JMSException
- 内部エラーのためにセッションが一時トピックの作成に失敗した場合。
unsubscribe
void unsubscribe(StringSE name) throws JMSException
クライアントによって作成された永続サブスクリプションを登録解除します。このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。
サブスクリプションにアクティブな
TopicSubscriber
がある場合、または消費されたメッセージが保留中のトランザクションの一部であるか、セッションで確認応答されていない場合、クライアントが永続サブスクリプションを削除するのは誤りです。- 次で指定:
- インターフェース
Session
のunsubscribe
- パラメーター:
name
- このサブスクリプションを識別するために使用される名前- 例外:
JMSException
- 内部エラーのためにセッションが永続サブスクリプションへのサブスクライブに失敗した場合。InvalidDestinationException
- 無効なサブスクリプション名が指定された場合。