反應式建議

從 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(),以套用例如反應式斷路器