响应式建议

从 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() 以应用,例如,响应式断路器