響應式通知
從 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()
,例如用於應用 響應式熔斷器。