パッケージ jakarta.jms

インターフェース TopicSession

すべてのスーパーインターフェース:
AutoCloseableSERunnableSESession

public interface TopicSession extends Session
TopicSession オブジェクトは、TopicPublisherTopicSubscriberTemporaryTopic オブジェクトを作成するためのメソッドを提供します。また、クライアントの永続サブスクライバーを削除する方法も提供します。

TopicSession は、Pub/Sub 固有のオブジェクトを作成するために使用されます。一般に、Session オブジェクトを使用し、TopicSession は既存のコードをサポートするためにのみ使用します。Session オブジェクトを使用すると、プログラミングモデルが簡素化され、2 つのメッセージングドメイン間でトランザクションを使用できるようになります。

TopicSession を使用して、ポイントツーポイントドメインに固有のオブジェクトを作成することはできません。次のメソッドは Session を継承しますが、TopicSession から使用する場合は、IllegalStateException をスローする必要があります。

  • createBrowser
  • createQueue
  • createTemporaryQueue
導入:
JMS 1.0
バージョン:
Jakarta Messaging 2.0
関連事項:
  • メソッドの詳細

    • createTopic

      Topic createTopic(StringSE topicName) throws JMSException
      Topic 名を指定してトピック ID を作成します。

      この機能は、クライアントがトピック ID を動的に操作する必要があるまれなケースのために提供されています。これにより、プロバイダー固有の名前でトピック ID を作成できます。この機能に依存するクライアントは移植性がありません。

      この方法は、物理的なトピックを作成するためのものではないことに注意してください。トピックの物理的な作成は管理タスクであり、Jakarta Messaging API によって開始されることはありません。唯一の例外は、一時的なトピックの作成です。これは、createTemporaryTopic メソッドを使用して実行されます。

      次で指定:
      インターフェース SessioncreateTopic 
      パラメーター:
      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 MessageConsumerJMSConsumer オブジェクトを意味します。

      非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要のあるクライアント識別子によって識別されます。その後、その非共有の永続サブスクリプションでコンシューマーを作成することを希望するアプリケーションは、同じクライアント識別子を使用する必要があります。

      共有されていない永続サブスクリプションが同じ名前とクライアント識別子、同じトピックとメッセージセレクターですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションからの消費されたメッセージがまだ含まれていない場合保留中のトランザクション、またはセッションでまだ確認されていない場合、このメソッドは既存の永続サブスクリプションに TopicSubscriber を作成します。

      共有されていない永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがある場合、またはそのサブスクリプションからの消費されたメッセージがまだ保留中のトランザクションの一部であるか、まだ確認されていない場合セッションでは、JMSException がスローされます。

      同じ名前とクライアント識別子でトピックが異なる非共有の永続サブスクリプションがすでに存在し、メッセージセレクターまたは noLocal 値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションはまだ保留中のトランザクションの一部であるか、セッションでまだ確認されていない場合、永続サブスクリプションは削除され、新しいサブスクリプションが作成されます。

      共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSException がスローされます。

      同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

      このメソッドは、コンシューマーを表すために MessageConsumer ではなく TopicSubscriber を返すことを除いて、対応する createDurableConsumer メソッドと同じです。

      次で指定:
      インターフェース SessioncreateDurableSubscriber 
      パラメーター:
      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 MessageConsumerJMSConsumer オブジェクトを意味します。

      非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要のあるクライアント識別子によって識別されます。その後、その非共有の永続サブスクリプションでコンシューマーを作成することを希望するアプリケーションは、同じクライアント識別子を使用する必要があります。

      共有されていない永続サブスクリプションが同じ名前とクライアント識別子、同じトピックとメッセージセレクターですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションからの消費されたメッセージがまだ含まれていない場合保留中のトランザクション、またはセッションでまだ確認されていない場合、このメソッドは既存の永続サブスクリプションに TopicSubscriber を作成します。

      共有されていない永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがある場合、またはそのサブスクリプションからの消費されたメッセージがまだ保留中のトランザクションの一部であるか、まだ確認されていない場合セッションでは、JMSException がスローされます。

      同じ名前とクライアント識別子でトピックが異なる非共有の永続サブスクリプションがすでに存在し、メッセージセレクターまたは noLocal 値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがなく、そのサブスクリプションはまだ保留中のトランザクションの一部であるか、セッションでまだ確認されていない場合、永続サブスクリプションは削除され、新しいサブスクリプションが作成されます。

      共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSException がスローされます。

      noLocal が true に設定されている場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。

      同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

      このメソッドは、コンシューマーを表すために MessageConsumer ではなく TopicSubscriber を返すことを除いて、対応する createDurableConsumer メソッドと同じです。

      次で指定:
      インターフェース SessioncreateDurableSubscriber 
      パラメーター:
      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 の存続期間になります。
      次で指定:
      インターフェース SessioncreateTemporaryTopic 
      戻り値:
      一時的なトピックのアイデンティティ
      例外:
      JMSException - 内部エラーのためにセッションが一時トピックの作成に失敗した場合。
    • unsubscribe

      void unsubscribe(StringSE name) throws JMSException
      クライアントによって作成された永続サブスクリプションを登録解除します。

      このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。

      サブスクリプションにアクティブな TopicSubscriber がある場合、または消費されたメッセージが保留中のトランザクションの一部であるか、セッションで確認応答されていない場合、クライアントが永続サブスクリプションを削除するのは誤りです。

      次で指定:
      インターフェース Sessionunsubscribe 
      パラメーター:
      name - このサブスクリプションを識別するために使用される名前
      例外:
      JMSException - 内部エラーのためにセッションが永続サブスクリプションへのサブスクライブに失敗した場合。
      InvalidDestinationException - 無効なサブスクリプション名が指定された場合。