響應式通知

從 5.3 版本開始,ReactiveRequestHandlerAdvice 可用於生成 Mono 響應的請求訊息處理器。需要為該通知提供一個 BiFunction<Message<?>, Mono<?>, Publisher<?>>,它會在被攔截的 handleRequestMessage() 方法實現生成的響應上由 Mono.transform() 運算子呼叫。通常,當需要透過 timeout()retry() 等支援運算子來控制網路波動時,這種對 Mono 的自定義是必要的。例如,在使用 WebFlux 客戶端傳送 HTTP 請求時,我們可以使用以下配置,使等待響應的時間不超過 5 秒:

.handle(WebFlux.outboundGateway("https://somehost/"),
                       e -> e.customizeMonoReply((message, mono) -> mono.timeout(Duration.ofSeconds(5))));

引數 message 是訊息處理器的請求訊息,可用於確定請求作用域屬性。引數 mono 是此訊息處理器的 handleRequestMessage() 方法實現的返回結果。從此函式中也可以巢狀呼叫 Mono.transform(),例如用於應用 響應式熔斷器