クラス StompBrokerRelayMessageHandler

java.lang.ObjectSE
org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler
org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler
実装されたすべてのインターフェース:
AwareApplicationEventPublisherAwareLifecyclePhasedSmartLifecycleMessageHandler

public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
メッセージを STOMP ブローカーに転送して処理する MessageHandler

新しい CONNECT メッセージごとに、ブローカーへの独立した TCP 接続が開かれ、CONNECT メッセージを発信したクライアントからのすべてのメッセージに対して排他的に使用されます。同じクライアントからのメッセージは、セッション ID メッセージヘッダーで識別されます。逆に、STOMP ブローカーが TCP 接続でメッセージを返信すると、それらのメッセージはクライアントのセッション ID で強化され、コンストラクターに提供された MessageChannel を介してダウンストリームに返信されます。

このクラスは、(クライアントからではなく)サーバーアプリケーションから発信されたメッセージの送信に使用されるメッセージブローカーへのデフォルトの「システム」TCP 接続も自動的に開きます。このようなメッセージはどのクライアントにも関連付けられていないため、セッション ID ヘッダーはありません。「システム」接続は効果的に共有され、メッセージの受信には使用できません。「システム」接続を構成するために、いくつかのプロパティが提供されています。

導入:
4.0
作成者:
Rossen Stoyanchev, Andy Wilkinson
  • フィールドの詳細

  • コンストラクターの詳細

    • StompBrokerRelayMessageHandler

      public StompBrokerRelayMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, CollectionSE<StringSE> destinationPrefixes)
      指定されたメッセージチャネルと宛先プレフィックスを使用して StompBrokerRelayMessageHandler インスタンスを作成します。
      パラメーター:
      inboundChannel - クライアントからメッセージを受信するためのチャネル (たとえば WebSocket クライアント)
      outboundChannel - クライアントにメッセージを送信するためのチャネル (たとえば WebSocket クライアント)
      brokerChannel - アプリケーションがブローカーにメッセージを送信するためのチャネル
      destinationPrefixes - ブローカーがサポートする宛先プレフィックス。指定されたプレフィックスに一致しない宛先は無視されます。
  • メソッドの詳細

    • setRelayHost

      public void setRelayHost(StringSE relayHost)
      STOMP メッセージブローカーホストを設定します。
    • getRelayHost

      public StringSE getRelayHost()
      STOMP メッセージブローカーホストを返します。
    • setRelayPort

      public void setRelayPort(int relayPort)
      STOMP メッセージブローカーポートを設定します。
    • getRelayPort

      public int getRelayPort()
      STOMP メッセージブローカーポートを返します。
    • setClientLogin

      public void setClientLogin(StringSE clientLogin)
      接続されたクライアントに代わって STOMP ブローカーへの接続を作成するときに使用するログインを設定します。

      デフォルトでは「ゲスト」に設定されています。

      関連事項:
    • getClientLogin

      public StringSE getClientLogin()
      接続されたクライアントに代わって STOMP ブローカーへの接続に使用するように構成されたログインを返します。
      関連事項:
    • setClientPasscode

      public void setClientPasscode(StringSE clientPasscode)
      接続されたクライアントに代わって STOMP ブローカーへの接続を作成するために使用するクライアントパスコードを設定します。

      デフォルトでは「ゲスト」に設定されています。

      関連事項:
    • getClientPasscode

      public StringSE getClientPasscode()
      接続されたクライアントに代わって STOMP ブローカーへの接続に使用する構成済みのパスコードを返します。
      関連事項:
    • setSystemLogin

      public void setSystemLogin(StringSE systemLogin)
      アプリケーション内から STOMP ブローカーにメッセージを送信するために使用される共有「システム」接続のログインを設定します。つまり、特定のクライアントセッションに関連付けられていないメッセージ(REST/HTTP リクエスト処理メソッドなど)です。

      デフォルトでは「ゲスト」に設定されています。

    • getSystemLogin

      public StringSE getSystemLogin()
      共有「システム」接続に使用されるログインを STOMP ブローカーに返します。
    • setSystemPasscode

      public void setSystemPasscode(StringSE systemPasscode)
      アプリケーション内から STOMP ブローカーにメッセージを送信するために使用される共有「システム」接続のパスコードを設定します。つまり、特定のクライアントセッションに関連付けられていないメッセージ(REST/HTTP リクエスト処理メソッドなど)です。

      デフォルトでは「ゲスト」に設定されています。

    • getSystemPasscode

      public StringSE getSystemPasscode()
      STOMP ブローカーへの共有「システム」接続に使用されるパスコードを返します。
    • setSystemHeartbeatSendInterval

      public void setSystemHeartbeatSendInterval(long systemHeartbeatSendInterval)
      他のデータが送信されていない場合に「システム」接続がハートビートを STOMP ブローカーに送信する間隔をミリ秒単位で設定します。値をゼロにすると、ハートビートがブローカーに送信されなくなります。

      デフォルト値は 10000 です。

      「システム」接続の詳細については、クラスレベルのドキュメントを参照してください。

    • getSystemHeartbeatSendInterval

      public long getSystemHeartbeatSendInterval()
      「システム」接続がハートビートを STOMP ブローカーに送信する間隔をミリ秒単位で返します。
    • setSystemHeartbeatReceiveInterval

      public void setSystemHeartbeatReceiveInterval(long heartbeatReceiveInterval)
      他のデータがない場合に「システム」接続が STOMP ブローカーからハートビートを受信することを期待する最大間隔をミリ秒単位で設定します。ゼロの値は、ブローカーからハートビートを受信しないことを期待するように接続を構成します。

      デフォルト値は 10000 です。

      「システム」接続の詳細については、クラスレベルのドキュメントを参照してください。

    • getSystemHeartbeatReceiveInterval

      public long getSystemHeartbeatReceiveInterval()
      「システム」接続が STOMP ブローカーからハートビートを受信することを期待している間隔をミリ秒単位で返します。
    • setSystemSubscriptions

      public void setSystemSubscriptions(@Nullable MapSE<StringSE,MessageHandler> subscriptions)
      受信したメッセージを処理するために、MessageHandler とともに共有「システム」接続でサブスクライブする宛先をもう 1 つ構成します。

      これは、サーバーが相互にメッセージを転送するマルチアプリケーションサーバーシナリオ(未解決のユーザー宛先など)での内部使用のためのものです。

      パラメーター:
      subscriptions - サブスクライブする宛先。
    • getSystemSubscriptions

      public MapSE<StringSE,MessageHandler> getSystemSubscriptions()
      「システム」接続のサブスクリプションで構成されたマップを返します。
    • setVirtualHost

      public void setVirtualHost(@Nullable StringSE virtualHost)
      STOMP CONNECT フレームで使用する「ホスト」ヘッダーの値を設定します。このプロパティを設定すると、STOMP ブローカーに送信されるすべての STOMP フレームに「ホスト」ヘッダーが追加されます。これは、たとえば、TCP 接続が確立される実際のホストがクラウドベースの STOMP サービスを提供するホストと異なるクラウド環境で役立つ場合があります。

      デフォルトでは、このプロパティは設定されていません。

    • getVirtualHost

      @Nullable public StringSE getVirtualHost()
      構成された仮想ホストの値を返します。
    • setTcpClient

      public void setTcpClient(@Nullable TcpOperations<byte[]> tcpClient)
      STOMP ブローカーへの TCP 接続を管理するための TCP クライアントを構成します。

      デフォルトでは、ReactorNettyTcpClient または ReactorNetty2TcpClient が使用されます。

      注意 : このプロパティを使用すると、指定された host または port は事実上無視されます。

    • getTcpClient

      @Nullable public TcpOperations<byte[]> getTcpClient()
      構成された TCP クライアントを取得します(構成されていない限り null を呼び出さず、このメソッドはハンドラーが開始される前に呼び出されるため、デフォルトの実装が初期化されます)。
    • setHeaderInitializer

      public void setHeaderInitializer(@Nullable MessageHeaderInitializer headerInitializer)
      クライアントの送信メッセージチャネルに送信される、StompBrokerRelayMessageHandler を介して作成されたすべてのメッセージのヘッダーに適用する MessageHeaderInitializer を構成します。

      デフォルトでは、このプロパティは設定されていません。

    • getHeaderInitializer

      @Nullable public MessageHeaderInitializer getHeaderInitializer()
      設定済みのヘッダー初期化子を返します。
    • getStatsInfo

      public StringSE getStatsInfo()
      内部状態とカウンタを説明する文字列を返します。事実上、getStats() 上の toString()
    • getStats

      内部状態とカウンターを含む構造化オブジェクトを返します。
      導入:
      5.2
    • getConnectionCount

      public int getConnectionCount()
      ブローカーへの TCP 接続の現在の数を返します。
    • setTaskScheduler

      public void setTaskScheduler(@Nullable TaskScheduler taskScheduler)
      現在のハートビート期間でクライアントからブローカーへのメッセージ数をリセットするために使用するように TaskScheduler を構成します。詳細については、StompBrokerRelayRegistration.setTaskScheduler(TaskScheduler) を参照してください。
      パラメーター:
      taskScheduler - 使用するスケジューラー
      導入:
      5.3
    • getTaskScheduler

      @Nullable public TaskScheduler getTaskScheduler()
    • startInternal

      protected void startInternal()
      オーバーライド:
      クラス AbstractBrokerMessageHandlerstartInternal 
    • stopInternal

      protected void stopInternal()
      オーバーライド:
      クラス AbstractBrokerMessageHandlerstopInternal 
    • handleMessageInternal

      protected void handleMessageInternal(Message<?> message)
      次で指定:
      クラス AbstractBrokerMessageHandlerhandleMessageInternal 
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString