響應式 Advice
從版本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(),例如,應用一個 響應式斷路器。