パッケージ jakarta.jms

インターフェース TopicSubscriber

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

public interface TopicSubscriber extends MessageConsumer
クライアントは TopicSubscriber オブジェクトを使用して、トピックに公開されたメッセージを受信します。TopicSubscriber オブジェクトは、メッセージコンシューマーのパブリッシュ / サブスクライブフォームです。Session.createConsumer を使用して MessageConsumer を作成できます。

TopicSession では、トピックごとに複数の TopicSubscriber オブジェクトを作成できます。トピックの各メッセージを、それを受信する資格がある各サブスクライバーに配信します。メッセージの各コピーは、完全に別個のメッセージとして扱われます。1 つのコピーで行われた作業が他のコピーに影響を与えることはありません。一方を認めても、他方を認めない。1 つのメッセージはすぐに配信され、別のメッセージはサブスクライバーがその前のメッセージを処理するのを待ちます。

通常の TopicSubscriber オブジェクトは耐久性がありません。彼らはアクティブな間に公開されたメッセージのみを受け取ります。

サブスクライバーのメッセージセレクターによってフィルターで除外されたメッセージは、サブスクライバーに配信されることはありません。サブスクライバーの観点からは、それらは存在しません。

場合によっては、接続がトピックをパブリッシュおよびサブスクライブすることがあります。サブスクライバー NoLocal 属性を使用すると、サブスクライバーは、自身の接続によって発行されたメッセージの配信を禁止できます。

サブスクライバーが非アクティブである間に公開されたメッセージを含め、トピックで公開されたすべてのメッセージをクライアントが受信する必要がある場合、クライアントは永続的な TopicSubscriber を使用します。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクライバーによって承認されるか、期限が切れるまで保持されるようにします。

永続サブスクライバーとのセッションは、常に同じクライアント ID を提供する必要があります。さらに、各クライアントは、作成する各永続サブスクリプションを(クライアント識別子内で)一意に識別する名前を指定する必要があります。特定の永続サブスクリプションに対して TopicSubscriber を持つことができるのは、一度に 1 つのセッションだけです。

クライアントは、同じ名前の新しい TopicSubscriber と新しいトピックまたはメッセージセレクター、あるいはその両方を作成することにより、既存の永続サブスクリプションを変更できます。永続サブスクリプションを変更することは、古いサブスクリプションを登録解除(削除)し、新しいサブスクリプションを作成することと同じです。

unsubscribe メソッドは、永続サブスクリプションを削除するために使用されます。unsubscribe メソッドは、Session または TopicSession レベルで使用できます。このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。

MessageConsumer の作成は、TopicSubscriber の作成と同じ機能を提供します。恒久サブスクライバーを作成するには、Session.CreateDurableSubscriber の使用をお勧めします。TopicSubscriber は、既存のコードをサポートするために提供されています。

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

    • getTopic

      Topic getTopic() throws JMSException
      このサブスクライバーに関連付けられている Topic を取得します。
      戻り値:
      このサブスクライバーの Topic
      例外:
      JMSException - 内部エラーのために、Jakarta Messaging プロバイダーがこのトピックサブスクライバーのトピックを取得できなかった場合。
    • getNoLocal

      boolean getNoLocal() throws JMSException
      このサブスクライバーの NoLocal 属性を取得します。この属性のデフォルト値は false です。
      戻り値:
      ローカルに発行されたメッセージが禁止されている場合は true
      例外:
      JMSException - 内部エラーのために Jakarta Messaging プロバイダーがこのトピックサブスクライバーの NoLocal 属性の取得に失敗した場合