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