リアクティブアドバイス
バージョン 5.3 以降では、Mono
レスポンスを生成するリクエストメッセージハンドラーに ReactiveRequestHandlerAdvice
を使用できます。このアドバイスには BiFunction<Message<?>, Mono<?>, Publisher<?>>
を提供する必要があり、インターセプトされた handleRequestMessage()
メソッドの実装によって生成されたレスポンスで Mono.transform()
オペレーターから呼び出されます。通常、このような Mono
のカスタマイズは、timeout()
、retry()
および同様のサポートオペレーターを介してネットワークの変動を制御したい場合に必要です。たとえば、WebFlux クライアントを介して HTTP リクエストを送信できる場合、以下の構成を使用して、レスポンスを 5 秒以上待機しないようにすることができます。
.handle(WebFlux.outboundGateway("https://somehost/"),
e -> e.customizeMonoReply((message, mono) -> mono.timeout(Duration.ofSeconds(5))));
message
引数はメッセージハンドラーのリクエストメッセージであり、リクエストスコープの属性を決定するために使用できます。mono
引数は、このメッセージハンドラーの handleRequestMessage()
メソッド実装の結果です。この関数からネストされた Mono.transform()
を呼び出して、たとえばリアクティブサーキットブレーカーを適用することもできます。