gpt4 book ai didi

有条件地使用指数退避的 Spring react 重试

转载 作者:行者123 更新时间:2023-12-01 21:57:45 26 4
gpt4 key购买 nike

使用 spring reactive WebClient,我使用了一个 API,如果响应状态为 500,我需要使用指数退避重试。但是在 Mono 类中,我没有看到任何以 Predicate 作为输入参数的 retryBackoff。

这是我搜索的函数类型:

public final Mono<T> retryBackoff(Predicate<? super Throwable> retryMatcher, long numRetries, Duration firstBackoff)

现在我的实现如下(我没有使用 backOff 机制重试):

client.sendRequest()
.retry(e -> ((RestClientException) e).getStatus() == 500)
.subscribe();

最佳答案

您可能想看看 reactor-addons 中的 reactor-extra 模块项目。在 Maven 中你可以这样做:

<dependency>
<groupId>io.projectreactor.addons</groupId>
<artifactId>reactor-extra</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>

然后像这样使用它:

client.post()
.syncBody("test")
.retrieve()
.bodyToMono(String.class)
.retryWhen(Retry.onlyIf(ctx -> ctx.exception() instanceof RestClientException)
.exponentialBackoff(firstBackoff, maxBackoff)
.retryMax(maxRetries))

关于有条件地使用指数退避的 Spring react 重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55537755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com