反应建议
从 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()
,例如,应用 反应式断路器。