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