クラス AbstractBrokerMessageHandler

java.lang.ObjectSE
org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler
実装されたすべてのインターフェース:
AwareApplicationEventPublisherAwareLifecyclePhasedSmartLifecycleMessageHandler
既知の直属サブクラス
SimpleBrokerMessageHandlerStompBrokerRelayMessageHandler

public abstract class AbstractBrokerMessageHandler extends ObjectSE implements MessageHandler, ApplicationEventPublisherAware, SmartLifecycle
登録されたサブスクライバーにメッセージを仲介する MessageHandler の抽象基本クラス。
導入:
4.0
作成者:
Rossen Stoyanchev
  • フィールドの詳細

    • logger

      protected final Log logger
  • コンストラクターの詳細

    • AbstractBrokerMessageHandler

      public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel)
      宛先プレフィックスのないコンストラクター(すべての宛先に一致)。
      パラメーター:
      inboundChannel - クライアントからメッセージを受信するためのチャネル (たとえば WebSocket クライアント)
      outboundChannel - クライアントにメッセージを送信するためのチャネル (たとえば WebSocket クライアント)
      brokerChannel - アプリケーションがブローカーにメッセージを送信するためのチャネル
    • AbstractBrokerMessageHandler

      public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, @Nullable CollectionSE<StringSE> destinationPrefixes)
      メッセージの宛先に一致する宛先プレフィックスを持つコンストラクター。
      パラメーター:
      inboundChannel - クライアントからメッセージを受信するためのチャネル (たとえば WebSocket クライアント)
      outboundChannel - クライアントにメッセージを送信するためのチャネル (たとえば WebSocket クライアント)
      brokerChannel - アプリケーションがブローカーにメッセージを送信するためのチャネル
      destinationPrefixes - メッセージを除外するために使用するプレフィックス
  • メソッドの詳細

    • getClientInboundChannel

      public SubscribableChannel getClientInboundChannel()
    • getClientOutboundChannel

      public MessageChannel getClientOutboundChannel()
    • getBrokerChannel

      public SubscribableChannel getBrokerChannel()
    • getDestinationPrefixes

      public CollectionSE<StringSE> getDestinationPrefixes()
      ブローカーに転送するメッセージをフィルタリングするために使用する宛先プレフィックスを返します。宛先があり、宛先が一致しないメッセージは無視されます。

      デフォルトでは、これは設定されていません。

    • setUserDestinationPredicate

      public void setUserDestinationPredicate(@Nullable PredicateSE<StringSE> predicate)
      ユーザーの宛先でメッセージを識別するように述語を構成します。destination prefixes が構成されていない場合、これは、ブローカーに到達する前に UserDestinationMessageHandler によって前処理される必要があるユーザー宛先メッセージを認識してスキップできます。
      パラメーター:
      predicate - null 以外の宛先を持つユーザーメッセージをユーザー宛先を持つメッセージとして識別するための述語。
      導入:
      5.3.4
    • setPreservePublishOrder

      public void setPreservePublishOrder(boolean preservePublishOrder)
      クライアントが発行順にメッセージを受信する必要があるかどうか。

      デフォルトでは、"clientOutboundChannel" に送信されたメッセージは同じ順序で処理されない場合があります。これは、チャネルが ThreadPoolExecutor によってサポートされているため、順番に処理が保証されないためです。

      このフラグが true に設定されている場合、同じセッション内のメッセージは、公開順序を維持するために一度に 1 つずつ "clientOutboundChannel" に送信されます。

      パラメーター:
      preservePublishOrder - 順番に公開するかどうか
      導入:
      5.1
    • isPreservePublishOrder

      public boolean isPreservePublishOrder()
      メッセージが公開順に受信されるようにするかどうか。
      導入:
      5.1
    • setApplicationEventPublisher

      public void setApplicationEventPublisher(@Nullable ApplicationEventPublisher publisher)
      インターフェースからコピーされた説明: ApplicationEventPublisherAware
      このオブジェクトが実行される ApplicationEventPublisher を設定します。

      通常の Bean プロパティの設定後、InitializingBean の afterPropertiesSet またはカスタム init メソッドのような初期コールバックの前に呼び出されます。ApplicationContextAware の setApplicationContext の前に呼び出されます。

      次で指定:
      インターフェース ApplicationEventPublisherAwaresetApplicationEventPublisher 
      パラメーター:
      publisher - このオブジェクトによって使用されるイベント発行元
    • getApplicationEventPublisher

      @Nullable public ApplicationEventPublisher getApplicationEventPublisher()
    • setAutoStartup

      public void setAutoStartup(boolean autoStartup)
    • isAutoStartup

      public boolean isAutoStartup()
      インターフェースからコピーされた説明: SmartLifecycle
      true が含まれる ApplicationContext がリフレッシュされるときに、この Lifecycle コンポーネントがコンテナーによって自動的に開始される場合、true を返します。

      false の値は、プレーン Lifecycle 実装に類似した、明示的な Lifecycle.start() 呼び出しを介してコンポーネントが開始されることを意図していることを示します。

      デフォルトの実装は true を返します。

      次で指定:
      インターフェース SmartLifecycleisAutoStartup 
      関連事項:
    • setPhase

      public void setPhase(int phase)
      このハンドラーが実行されるフェーズを設定します。

      デフォルトでは、これは SmartLifecycle.DEFAULT_PHASE です。

      導入:
      6.1.4
    • getPhase

      public int getPhase()
      インターフェースからコピーされた説明: SmartLifecycle
      このライフサイクルオブジェクトが実行されるはずのフェーズを返します。

      デフォルトの実装は、通常の Lifecycle 実装の前に stop() コールバックを実行できるようにするために SmartLifecycle.DEFAULT_PHASE を返します。

      次で指定:
      インターフェース PhasedgetPhase 
      次で指定:
      インターフェース SmartLifecyclegetPhase 
      関連事項:
    • start

      public void start()
      インターフェースからコピーされた説明: Lifecycle
      このコンポーネントを起動します。

      コンポーネントがすでに実行されている場合は、例外をスローしないでください。

      コンテナーの場合、これは適用されるすべてのコンポーネントに開始信号を伝播します。

      次で指定:
      インターフェース Lifecyclestart 
      関連事項:
    • startInternal

      protected void startInternal()
    • stop

      public void stop()
      インターフェースからコピーされた説明: Lifecycle
      このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。非同期停止動作が必要な場合は、SmartLifecycle とその stop(Runnable) バリアントの実装を検討してください。

      この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止信号を事前に考慮することなく呼び出されます。

      コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。

      コンテナーの場合、これは停止信号を適用するすべてのコンポーネントに伝播します。

      次で指定:
      インターフェース Lifecyclestop 
      関連事項:
    • stopInternal

      protected void stopInternal()
    • stop

      public final void stop(RunnableSE callback)
      インターフェースからコピーされた説明: SmartLifecycle
      Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。

      提供されたコールバックは、LifecycleProcessor によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle コンポーネントが実際に停止した後に実行する必要があります。

      LifecycleProcessor は、stop メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle 実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop() は呼び出されません。

      デフォルトの実装は Lifecycle.stop() に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。

      次で指定:
      インターフェース SmartLifecyclestop 
      関連事項:
    • isRunning

      public final boolean isRunning()
      このメッセージハンドラーが現在実行されているかどうかを確認します。

      このメッセージハンドラーが実行されている場合でも、具象サブクラスの実装に応じて、isBrokerAvailable() フラグが独立してオンとオフを交互に繰り返す場合があることに注意してください。

      次で指定:
      インターフェース LifecycleisRunning 
      戻り値:
      コンポーネントが現在実行中かどうか
    • isBrokerAvailable

      public boolean isBrokerAvailable()
      メッセージブローカーが現在利用可能で、メッセージを処理できるかどうか。

      これは、このメッセージハンドラーが実行されているかどうかを示す isRunning() フラグに追加されることに注意してください。言い換えると、メッセージハンドラーが最初に実行されている必要があり、その後、具象サブクラスの実装に応じて、#isBrokerAvailable() フラグがオンとオフを個別に切り替える場合があります。

      アプリケーションコンポーネントは、org.springframework.context.ApplicationListener<BrokerAvailabilityEvent> を実装して、ブローカーが使用可能および使用不可になったときに通知を受け取ることができます。

    • handleMessage

      public void handleMessage(Message<?> message)
      インターフェースからコピーされた説明: MessageHandler
      指定されたメッセージを処理します。
      次で指定:
      インターフェース MessageHandlerhandleMessage 
      パラメーター:
      message - 処理するメッセージ
    • handleMessageInternal

      protected abstract void handleMessageInternal(Message<?> message)
    • checkDestinationPrefix

      protected boolean checkDestinationPrefix(@Nullable StringSE destination)
      指定された宛先のメッセージを処理する必要があるかどうか。これは、次の条件のいずれかが当てはまる場合に当てはまります。
      1. 宛先は、構成された destination prefixes の 1 つで始まります。
      2. プレフィックスが設定されておらず、宛先が userDestinationPredicate と一致していません。
      3. メッセージには宛先がありません。
      パラメーター:
      destination - 確認する宛先
      戻り値:
      宛先を処理する(true)かスキップする(false)か
    • publishBrokerAvailableEvent

      protected void publishBrokerAvailableEvent()
    • publishBrokerUnavailableEvent

      protected void publishBrokerUnavailableEvent()
    • getClientOutboundChannelForSession

      protected MessageChannel getClientOutboundChannelForSession(StringSE sessionId)
      クライアントへのメッセージ送信に使用する MessageChannel を取得します。preservePublishOrder=true の場合はセッションごとのラッパーです。
      導入:
      5.1