クラス RSocketMessageHandler
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、EmbeddedValueResolverAware
、ReactiveMessageHandler
@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
フィールドサマリー
クラス org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler から継承されたフィールド
logger
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
protected CompositeMessageCondition
extendMapping
(CompositeMessageCondition composite, HandlerMethod handler) このメソッドは、マッピングが追加される直前に呼び出されます。protected CompositeMessageCondition
getCondition
(AnnotatedElementSE element) 指定されたアノテーション付き要素のマッピング条件を決定します。設定されたdefaultDataMimeType
またはnull
を返します。設定されたdefaultMetadataMimeType
を返します。設定されたencoders
を返します。設定されたMetadataExtractor
を返します。configured
RSocketStrategies
を返します。protected void
handleNoMatch
(RouteMatcher.Route destination, Message<?> message) 一致するハンドラーが見つからないときに呼び出されます。protected ListSE<? extends HandlerMethodReturnValueHandler>
使用する戻り値ハンドラーのリストを返します。io.rsocket.SocketAcceptor
client
またはserver
RSocket レスポンダとしてプラグインできる、このRSocketMessageHandler
インスタンスによってサポートされる RSocketSocketAcceptor
を返します。static io.rsocket.SocketAcceptor
responder
(RSocketStrategies strategies, ObjectSE... candidateHandlers) アノテーション付きメソッドを持つハンドラーに支えられた RSocketSocketAcceptor
を作成する静的ファクトリメソッド。void
setDecoders
(ListSE<? extends Decoder<?>> decoders) 受信ペイロードに使用するデコーダーを構成します。void
setDefaultDataMimeType
(MimeType mimeType) SETUP
フレームで指定されていない場合、データペイロードに使用するデフォルトのコンテンツ型を設定します。void
setDefaultMetadataMimeType
(MimeType mimeType) SETUP
フレームで指定されていない場合、ペイロードデータのデフォルトMimeType
を構成します。void
setEncoders
(ListSE<? extends Encoder<?>> encoders) ハンドラーメソッドの戻り値のエンコードに使用するエンコーダーを構成します。void
setMetadataExtractor
(MetadataExtractor extractor) MetadataExtractor
を構成して、他のメタデータとともにルートを抽出します。void
さまざまなリアクティブ型を適応させるためにレジストリを構成します。void
setRouteMatcher
(RouteMatcher routeMatcher) RouteMatcher
を設定して、設定されているルートパターンに基づいてメッセージをハンドラーにマッピングするために使用します。void
setRSocketStrategies
(RSocketStrategies rsocketStrategies) クライアント側RSocketRequester
を初期化するために再利用できるRSocketStrategies
インスタンスを介してこのハンドラーを構成します。クラス org.springframework.messaging.handler.annotation.reactive.MessageMappingMessageHandler から継承されたメソッド
createExceptionMethodResolverFor, getConversionService, getDecoders, getDestination, getDirectLookupMappings, getMappingComparator, getMappingForMethod, getMatchingMapping, getRouteMatcher, getValidator, handleMatch, initArgumentResolvers, obtainRouteMatcher, processDestinations, registerMessagingAdvice, setConversionService, setEmbeddedValueResolver, setValidator
クラス org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler から継承されたメソッド
detectHandlerMethods, getApplicationContext, getArgumentResolverConfigurer, getArgumentResolvers, getBeanName, getDestinationLookup, getHandlerMethods, getHandlerPredicate, getReactiveAdapterRegistry, getReturnValueHandlerConfigurer, handleMessage, registerExceptionHandlerAdvice, registerHandlerMethod, setApplicationContext, setArgumentResolverConfigurer, setBeanName, setHandlerPredicate, setHandlers, setReturnValueHandlerConfigurer
コンストラクターの詳細
RSocketMessageHandler
public RSocketMessageHandler()
メソッドの詳細
setEncoders
ハンドラーメソッドの戻り値のエンコードに使用するエンコーダーを構成します。rsocketStrategies
が設定されると、このプロパティはエンコーダーで再初期化され、同様にこのプロパティが設定されると、RSocketStrategies
は変更されてエンコーダーが変更されます。デフォルトでは、これは
RSocketStrategies
のデフォルトに設定されています。getEncoders
設定されたencoders
を返します。setDecoders
受信ペイロードに使用するデコーダーを構成します。rsocketStrategies
が設定されると、このプロパティはデコーダーで再初期化され、同様にこのプロパティが設定されると、RSocketStrategies
はミューテートされてデコーダーが変更されます。デフォルトでは、これは
RSocketStrategies
のデフォルトに設定されています。- オーバーライド:
- クラス
MessageMappingMessageHandler
のsetDecoders
setRouteMatcher
RouteMatcher
を設定して、設定されているルートパターンに基づいてメッセージをハンドラーにマッピングするために使用します。デフォルトでは、
SimpleRouteMatcher
が使用され、AntPathMatcher
に "." が付いています。セパレータ。効率を上げるには、代わりにspring-web
のPathPatternRouteMatcher
を使用することを検討してください。rsocketStrategies
が設定されると、このプロパティはルートマッチャーで再初期化され、同様にこのプロパティが設定されるとRSocketStrategies
が変更されてマッチャーが変更されます。デフォルトでは、これは
RSocketStrategies
のデフォルトに設定されています。- オーバーライド:
- クラス
MessageMappingMessageHandler
のsetRouteMatcher
setReactiveAdapterRegistry
さまざまなリアクティブ型を適応させるためにレジストリを構成します。rsocketStrategies
が設定されると、このプロパティはレジストリ内で再初期化され、同様にこのプロパティが設定されると、RSocketStrategies
は変更されてレジストリが変更されます。デフォルトでは、これは
RSocketStrategies
からdefaults
に設定されます。setMetadataExtractor
MetadataExtractor
を構成して、他のメタデータとともにルートを抽出します。rsocketStrategies
が設定されると、このプロパティは抽出で再初期化され、同様にこのプロパティが設定されると、RSocketStrategies
は変換されて抽出が変更されます。デフォルトでは、これは
RSocketStrategies
からdefaults
に設定されます。- パラメーター:
extractor
- 使用する抽出プログラム
getMetadataExtractor
設定されたMetadataExtractor
を返します。setRSocketStrategies
クライアント側RSocketRequester
を初期化するために再利用できるRSocketStrategies
インスタンスを介してこのハンドラーを構成します。このプロパティが設定されると、次のように設定されます。
setDecoders(List)
setEncoders(List)
setRouteMatcher(RouteMatcher)
setMetadataExtractor(MetadataExtractor)
setReactiveAdapterRegistry(ReactiveAdapterRegistry)
デフォルトでは、これは
RSocketStrategies.create()
に設定され、関連するすべてのプロパティのデフォルト設定が設定されます。getRSocketStrategies
configured
RSocketStrategies
を返します。setDefaultDataMimeType
SETUP
フレームで指定されていない場合、データペイロードに使用するデフォルトのコンテンツ型を設定します。デフォルトでは、これは設定されていません。
- パラメーター:
mimeType
- 使用する MimeType
getDefaultDataMimeType
設定されたdefaultDataMimeType
またはnull
を返します。setDefaultMetadataMimeType
SETUP
フレームで指定されていない場合、ペイロードデータのデフォルトMimeType
を構成します。デフォルトでは、これは
"message/x.rsocket.composite-metadata.v0"
に設定されています- パラメーター:
mimeType
- 使用する MimeType
getDefaultMetadataMimeType
設定されたdefaultMetadataMimeType
を返します。afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
MessageMappingMessageHandler
のafterPropertiesSet
initReturnValueHandlers
クラスからコピーされた説明:AbstractMethodMessageHandler
使用する戻り値ハンドラーのリストを返します。サブクラスは、
AbstractMethodMessageHandler.setReturnValueHandlerConfigurer(org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer)
を介して構成されたカスタム戻り値型も考慮する必要があります。- オーバーライド:
- クラス
MessageMappingMessageHandler
のinitReturnValueHandlers
getCondition
クラスからコピーされた説明:MessageMappingMessageHandler
指定されたアノテーション付き要素のマッピング条件を決定します。- オーバーライド:
- クラス
MessageMappingMessageHandler
のgetCondition
- パラメーター:
element
- チェックする要素- 戻り値:
- 条件、または
null
extendMapping
protected CompositeMessageCondition extendMapping(CompositeMessageCondition composite, HandlerMethod handler) クラスからコピーされた説明:AbstractMethodMessageHandler
このメソッドは、マッピングが追加される直前に呼び出されます。これにより、サブクラスはHandlerMethod
を考慮してマッピングを更新できます。これは、たとえば入力と出力のカーディナリティに基づいてメソッドシグネチャーを使用してマッピングを調整する場合に役立ちます。デフォルトでは、このメソッドは渡されたマッピングを返します。
- オーバーライド:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のextendMapping
- パラメーター:
composite
- 追加されるマッピングhandler
- マッピングのターゲットハンドラー- 戻り値:
- 新しいマッピングまたは同じ
handleNoMatch
クラスからコピーされた説明:AbstractMethodMessageHandler
一致するハンドラーが見つからないときに呼び出されます。- オーバーライド:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のhandleNoMatch
- パラメーター:
destination
- 宛先message
- メッセージ
responder
public io.rsocket.SocketAcceptor responder()client
またはserver
RSocket レスポンダとしてプラグインできる、このRSocketMessageHandler
インスタンスによってサポートされる RSocketSocketAcceptor
を返します。初期
ConnectionSetupPayload
は@ConnectionMapping
メソッドを介して処理されます。これは非同期であり、接続を妨げるエラーシグナルでMono<Void>
を返すことができます。このようなメソッドは、クライアントへのリクエストを開始することもできますが、これは処理と現在のスレッドから切り離して行う必要があります。接続上の後続のリクエストは、
MessageMapping
およびRSocketExchange
メソッドで処理できます。responder
public static io.rsocket.SocketAcceptor responder(RSocketStrategies strategies, ObjectSE... candidateHandlers) アノテーション付きメソッドを持つハンドラーに支えられた RSocketSocketAcceptor
を作成する静的ファクトリメソッド。効果的には次のショートカットです。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
- アノテーション付きハンドラーメソッドを持つオブジェクトおよび / またはクラスのリスト。作成されたRSocketMessageHandler
でAbstractMethodMessageHandler.setHandlers(List)
を呼び出すために使用- 戻り値:
RSocketRequester.Builder.rsocketConnector(org.springframework.messaging.rsocket.RSocketConnectorConfigurer)
に渡すことができるコンフィギュレーター- 導入:
- 5.2.6