リアクティブアドバイス

バージョン 5.3 以降、ReactiveRequestHandlerAdvice は Mono レスポンスを生成するリクエストメッセージハンドラーに使用できます。このアドバイスには 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() を呼び出して、たとえばリアクティブサーキットブレーカーを適用することもできます。