リアクティブアドバイス

バージョン 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() を呼び出して、たとえばリアクティブサーキットブレーカーを適用することもできます。