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