クラス RSocketMessageHandler

実装されたすべてのインターフェース:
AwareBeanNameAwareInitializingBeanApplicationContextAwareEmbeddedValueResolverAwareReactiveMessageHandler

public class RSocketMessageHandler extends MessageMappingMessageHandler
@MessageMapping および @ConnectMapping メソッドで RSocket リクエストを処理するための MessageMappingMessageHandler の拡張。@RSocketExchange の使用もサポートします。

サーバーシナリオの場合、このクラスは Spring 構成の Bean として宣言でき、@Controller Bean の @MessageMapping メソッドを検出します。チェックされる Bean は、handlerPredicate を使用して変更できます。このクラスのインスタンスを指定すると、responder() を使用して RSocketServer に登録する SocketAcceptor アダプターを取得できます。

クライアントの場合、おそらくサーバーと同じプロセスで、静的ファクトリメソッド responder(RSocketStrategies, Object...) を使用して、RSocketRequester.Builder を介して登録されるクライアントレスポンダーを取得することを検討してください。

@MessageMapping および @RSocketExchange メソッドの場合、このクラスはメソッドの入力および出力カーディナリティに基づいて RSocket 対話型を自動的に決定します。詳細については、Spring Framework リファレンスの「アノテーション付き応答者」セクションを参照してください。

導入:
5.2
作成者:
Rossen Stoyanchev, Olga Maciaszek-Sharma
  • コンストラクターの詳細

    • RSocketMessageHandler

      public RSocketMessageHandler()
  • メソッドの詳細

    • setEncoders

      public void setEncoders(ListSE<? extends Encoder<?>> encoders)
      ハンドラーメソッドの戻り値のエンコードに使用するエンコーダーを構成します。

      rsocketStrategies が設定されると、このプロパティはエンコーダーで再初期化され、同様にこのプロパティが設定されると、RSocketStrategies は変更されてエンコーダーが変更されます。

      デフォルトでは、これは RSocketStrategiesデフォルトに設定されています。

    • getEncoders

      public ListSE<? extends Encoder<?>> getEncoders()
      設定された encoders を返します。
    • setDecoders

      public void setDecoders(ListSE<? extends Decoder<?>> decoders)
      受信ペイロードに使用するデコーダーを構成します。

      rsocketStrategies が設定されると、このプロパティはデコーダーで再初期化され、同様にこのプロパティが設定されると、RSocketStrategies はミューテートされてデコーダーが変更されます。

      デフォルトでは、これは RSocketStrategiesデフォルトに設定されています。

      オーバーライド:
      クラス MessageMappingMessageHandlersetDecoders 
    • setRouteMatcher

      public void setRouteMatcher(@Nullable RouteMatcher routeMatcher)
      RouteMatcher を設定して、設定されているルートパターンに基づいてメッセージをハンドラーにマッピングするために使用します。

      デフォルトでは、SimpleRouteMatcher が使用され、AntPathMatcher に "." が付いています。セパレータとして。効率を上げるには、代わりに spring-web の PathPatternRouteMatcher を使用することを検討してください。

      rsocketStrategies が設定されると、このプロパティはルートマッチャーで再初期化され、同様にこのプロパティが設定されると RSocketStrategies が変更されてマッチャーが変更されます。

      デフォルトでは、これは RSocketStrategiesデフォルトに設定されています。

      オーバーライド:
      クラス MessageMappingMessageHandlersetRouteMatcher 
    • setReactiveAdapterRegistry

      public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry)
      さまざまなリアクティブ型を適応させるためにレジストリを構成します。

      rsocketStrategies が設定されると、このプロパティはレジストリ内で再初期化され、同様にこのプロパティが設定されると、RSocketStrategies は変更されてレジストリが変更されます。

      デフォルトでは、これは RSocketStrategies から defaults に設定されます。

      オーバーライド:
      クラス AbstractMethodMessageHandler<CompositeMessageCondition>setReactiveAdapterRegistry 
    • setMetadataExtractor

      public void setMetadataExtractor(MetadataExtractor extractor)
      MetadataExtractor を構成して、他のメタデータとともにルートを抽出します。

      rsocketStrategies が設定されると、このプロパティは抽出で再初期化され、同様にこのプロパティが設定されると、RSocketStrategies は変換されて抽出が変更されます。

      デフォルトでは、これは RSocketStrategies から defaults に設定されます。

      パラメーター:
      extractor - 使用する抽出プログラム
    • getMetadataExtractor

      public MetadataExtractor getMetadataExtractor()
      設定された MetadataExtractor を返します。
    • setRSocketStrategies

      public void setRSocketStrategies(RSocketStrategies rsocketStrategies)
      クライアント側 RSocketRequester を初期化するために再利用できる RSocketStrategies インスタンスを介してこのハンドラーを構成します。

      このプロパティが設定されると、次のように設定されます。

      デフォルトでは、これは RSocketStrategies.create() に設定され、関連するすべてのプロパティのデフォルト設定が設定されます。

    • getRSocketStrategies

      public RSocketStrategies getRSocketStrategies()
      configured RSocketStrategies を返します。
    • setDefaultDataMimeType

      public void setDefaultDataMimeType(@Nullable MimeType mimeType)
      SETUP フレームで指定されていない場合、データペイロードに使用するデフォルトのコンテンツ型を設定します。

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

      パラメーター:
      mimeType - 使用する MimeType
    • getDefaultDataMimeType

      @Nullable public MimeType getDefaultDataMimeType()
      設定された defaultDataMimeType または null を返します。
    • setDefaultMetadataMimeType

      public void setDefaultMetadataMimeType(MimeType mimeType)
      SETUP フレームで指定されていない場合、ペイロードデータのデフォルト MimeType を構成します。

      デフォルトでは、これは "message/x.rsocket.composite-metadata.v0" に設定されています

      パラメーター:
      mimeType - 使用する MimeType
    • getDefaultMetadataMimeType

      public MimeType getDefaultMetadataMimeType()
      設定された defaultMetadataMimeType を返します。
    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      オーバーライド:
      クラス MessageMappingMessageHandlerafterPropertiesSet 
    • initReturnValueHandlers

      protected ListSE<? extends HandlerMethodReturnValueHandler> initReturnValueHandlers()
      クラスからコピーされた説明: AbstractMethodMessageHandler
      使用する戻り値ハンドラーのリストを返します。

      サブクラスは、AbstractMethodMessageHandler.setReturnValueHandlerConfigurer(org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer) を介して構成されたカスタム戻り値型も考慮する必要があります。

      オーバーライド:
      クラス MessageMappingMessageHandlerinitReturnValueHandlers 
    • getCondition

      @Nullable protected CompositeMessageCondition getCondition(AnnotatedElementSE element)
      クラスからコピーされた説明: MessageMappingMessageHandler
      指定されたアノテーション付き要素のマッピング条件を決定します。
      オーバーライド:
      クラス MessageMappingMessageHandlergetCondition 
      パラメーター:
      element - チェックする要素
      戻り値:
      条件、または null
    • extendMapping

      protected CompositeMessageCondition extendMapping(CompositeMessageCondition composite, HandlerMethod handler)
      クラスからコピーされた説明: AbstractMethodMessageHandler
      このメソッドは、マッピングが追加される直前に呼び出されます。これにより、サブクラスは HandlerMethod を念頭に置いてマッピングを更新できます。これは、メソッドシグネチャーを使用してマッピングを調整する場合に役立ちます。入力と出力のカーディナリティに基づいています。

      デフォルトでは、このメソッドは渡されたマッピングを返します。

      オーバーライド:
      クラス AbstractMethodMessageHandler<CompositeMessageCondition>extendMapping 
      パラメーター:
      composite - 追加されるマッピング
      handler - マッピングのターゲットハンドラー
      戻り値:
      新しいマッピングまたは同じ
    • handleNoMatch

      protected void handleNoMatch(@Nullable RouteMatcher.Route destination, Message<?> message)
      クラスからコピーされた説明: AbstractMethodMessageHandler
      一致するハンドラーが見つからないときに呼び出されます。
      オーバーライド:
      クラス AbstractMethodMessageHandler<CompositeMessageCondition>handleNoMatch 
      パラメーター:
      destination - 宛先
      message - メッセージ
    • responder

      public io.rsocket.SocketAcceptor responder()
      client または server RSocket レスポンダとしてプラグインできる、この RSocketMessageHandler インスタンスによってサポートされる RSocket SocketAcceptor を返します。

      初期 ConnectionSetupPayload は @ConnectionMapping メソッドを介して処理されます。これは非同期であり、接続を妨げるエラー信号で Mono<Void> を返すことができます。このようなメソッドは、クライアントへのリクエストを開始することもできますが、これは処理と現在のスレッドから切り離して行う必要があります。

      接続上の後続のリクエストは、MessageMapping および RSocketExchange メソッドで処理できます。

    • responder

      public static io.rsocket.SocketAcceptor responder(RSocketStrategies strategies, ObjectSE... candidateHandlers)
      アノテーション付きメソッドを持つハンドラーに支えられた RSocket SocketAcceptor を作成する静的ファクトリメソッド。効果的には次のショートカットです。
       RSocketMessageHandler handler = new RSocketMessageHandler();
       handler.setHandlers(handlers);
       handler.setRSocketStrategies(strategies);
       handler.afterPropertiesSet();
      
       SocketAcceptor acceptor = handler.responder();
       

      これは、クライアント側レスポンダのプログラムによる作成と登録を目的としています。例:

       SocketAcceptor responder =
               RSocketMessageHandler.responder(strategies, new ClientHandler());
      
       RSocketRequester.builder()
               .rsocketConnector(connector -> connector.acceptor(responder))
               .connectTcp("localhost", server.address().getPort());
       

      指定されたハンドラーは、@Controller などのステレオタイプアノテーションを持つ必要がないことに注意してください。これは、同じアプリケーションで使用される可能性のあるサーバー側ハンドラーとの重複を回避できます。ただし、より高度なシナリオでは、カスタムステレオタイプアノテーションを介してハンドラーを検出し、RSocketMessageHandler を Bean として宣言することを検討してから、そこからレスポンダーを取得します。

      パラメーター:
      strategies - 作成された RSocketMessageHandler に設定する戦略
      candidateHandlers - アノテーション付きハンドラーメソッドを持つオブジェクトおよび / またはクラスのリスト。作成された RSocketMessageHandlerAbstractMethodMessageHandler.setHandlers(List) を呼び出すために使用
      戻り値:
      RSocketRequester.Builder.rsocketConnector(org.springframework.messaging.rsocket.RSocketConnectorConfigurer) に渡すことができるコンフィギュレーター
      導入:
      5.2.6