クラス RSocketMessageHandler
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、EmbeddedValueResolverAware
、ReactiveMessageHandler
@ConnectMapping
および @MessageMapping
メソッドで RSocket リクエストを処理するための MessageMappingMessageHandler
の拡張。 サーバーシナリオの場合、このクラスは Spring 構成で Bean として宣言でき、@Controller
Bean で @MessageMapping
メソッドを検出します。チェックされる Bean は、handlerPredicate
を介して変更できます。このクラスのインスタンスが与えられると、responder()
を使用して SocketAcceptor
アダプターを取得し、RSocketServer
に登録できます。
クライアントの場合、おそらくサーバーと同じプロセスで、静的ファクトリメソッド responder(RSocketStrategies, Object...)
を使用して、RSocketRequester.Builder
を介して登録されるクライアントレスポンダーを取得することを検討してください。
@MessageMapping
メソッドの場合、このクラスは、メソッドの入出力カーディナリティに基づいて RSocket 相互作用型を自動的に決定します。詳細については、Spring Framework リファレンスの「アノテーション付き応答者」セクションを参照してください。
- 導入:
- 5.2
- 作成者:
- Rossen Stoyanchev
フィールドサマリー
クラス 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>
使用する戻り値ハンドラーのリストを返します。client
またはserver
RSocket レスポンダーとしてプラグインできるこのRSocketMessageHandler
インスタンスによる RSocketSocketAcceptor
を返します。static 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
client
またはserver
RSocket レスポンダーとしてプラグインできるこのRSocketMessageHandler
インスタンスによる RSocketSocketAcceptor
を返します。最初の
ConnectionSetupPayload
は、非同期で接続を妨げるエラー信号とともにMono<Void>
を返す@ConnectionMapping
メソッドを介して処理されます。このようなメソッドは、クライアントへのリクエストを開始することもできますが、処理および現在のスレッドから切り離して実行する必要があります。接続での後続のリクエストは、
MessageMapping
メソッドで処理できます。responder
アノテーション付きメソッドを持つハンドラーによってサポートされる 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