Spring引入了新的HTTP接口。对于异常处理,文档声明注册一个响应状态处理程序,该处理程序适用于通过客户端执行的所有响应:
WebClient webClient = WebClient.builder()
.defaultStatusHandler(HttpStatusCode::isError, resp -> ...)
.build();
但是,不清楚如何处理重试。
在WebClient中,您可以简单地使用retryWhen():
public Mono<String> getData(String stockId) {
return webClient.get()
.uri(PATH_BY_ID, stockId)
.retrieve()
.bodyToMono(String.class)
.retryWhen(Retry.backoff(3, Duration.ofSeconds(2)));
}
我不知道如何将重试与Http接口结合起来。
1条答案
按热度按时间pcww981p1#
我想出来了。你需要使用一个交换过滤器。我为一个不同的问题实现了一个类似的解决方案:Adding a retry all requests of WebClient