クラス PostgresChannelMessageTableSubscriber

java.lang.ObjectSE
org.springframework.integration.jdbc.channel.PostgresChannelMessageTableSubscriber
実装済みのインターフェース一覧:
LifecyclePhasedSmartLifecycle

public final class PostgresChannelMessageTableSubscriber extends ObjectSE implements SmartLifecycle
Postgres データベースが JdbcChannelMessageStore 経由で受信する新しいメッセージのサブスクライバー。このサブスクライバーの実装は、Postgres の LISTEN/NOTIFY メカニズムを使用して、メッセージが異なる JVM または JdbcChannelMessageStore から書き込まれ、読み取られた場合でも、新しいメッセージのプッシュ通知を受信できるようにします。

このサブスクライバーには、どのライフサイクルでも開いたままの非共有 PgConnection が必要であることに注意してください。任意の JVM に対して単一のサブスクライバーを実行することをお勧めします。このため、このサブスクライバーは領域に依存しません。特定のリージョンとグループ ID のメッセージをリッスンするには、PostgresChannelMessageTableSubscriber.Subscription を使用して、このサブスクライバーに登録します。

機能するために、使用される Postgres データベースは、新しく到着したメッセージで通知を送信するためのトリガーを定義する必要があります。このトリガーは、この成果物内の schema-postgresql.sql ファイルで定義されていますが、コメント化されています。

導入:
6.0
作成者:
Rafael Winterhalter, Artem Bilan, Igor Lovich, Christian Tzolov, Johannes Edmeier
  • コンストラクターの詳細

    • PostgresChannelMessageTableSubscriber

      public PostgresChannelMessageTableSubscriber(PgConnectionSupplier connectionSupplier)
      JdbcChannelMessageStore.DEFAULT_TABLE_PREFIX を使用して新しいサブスクライバーを作成します。
      パラメーター:
      connectionSupplier - 対象の Postgres データベースの接続サプライヤー。
    • PostgresChannelMessageTableSubscriber

      public PostgresChannelMessageTableSubscriber(PgConnectionSupplier connectionSupplier, StringSE tablePrefix)
      新しいサブスクライバーを作成します。
      パラメーター:
      connectionSupplier - 対象の Postgres データベースの接続サプライヤー。
      tablePrefix - サブスクライブする JdbcChannelMessageStore のテーブルプレフィックス。
  • メソッドの詳細

    • setTaskExecutor

      public void setTaskExecutor(AsyncTaskExecutor taskExecutor)
      Postgres リスナーデーモンにマネージド AsyncTaskExecutor を提供します。
      パラメーター:
      taskExecutor - 使用する AsyncTaskExecutor
      導入:
      6.2
    • setNotificationTimeout

      public void setNotificationTimeout(DurationSE notificationTimeout)
      通知ポーリングのタイムアウトを設定します。指定された期間に通知が受信されない場合は、基礎となる接続が閉じられ、再確立されます。Duration.ZERO の値を設定すると、タイムアウトが無効になり、永久に待機します。これにより、DB フェイルオーバーシナリオで問題が発生する可能性があります。
      パラメーター:
      notificationTimeout - 通知ポーリングのタイムアウト。
      導入:
      6.1.8
    • subscribe

      public boolean subscribe(PostgresChannelMessageTableSubscriber.Subscription subscription)
      このサブスクライバーに新しいサブスクリプションを追加します。
      パラメーター:
      subscription - 登録するサブスクリプション。
      戻り値:
      サブスクリプションがまだ追加されていない場合は true
    • unsubscribe

      public boolean unsubscribe(PostgresChannelMessageTableSubscriber.Subscription subscription)
      このサブスクライバーから以前のサブスクリプションを削除します。
      パラメーター:
      subscription - 削除するサブスクリプション。
      戻り値:
      サブスクリプションが以前に登録されていて、現在は削除されている場合は true
    • start

      public void start()
      次で指定:
      インターフェース Lifecyclestart 
    • stop

      public void stop()
      次で指定:
      インターフェース Lifecyclestop 
    • isRunning

      public boolean isRunning()
      次で指定:
      インターフェース LifecycleisRunning