使用springactive WebClient,我使用了一个API,并且如果响应状态为500,我需要使用指数退避重试。但是在Mono类中,我看不到带有谓词作为输入参数的retryBackoff。
这是我要搜索的功能:
public final Mono<T> retryBackoff(Predicate<? super Throwable> retryMatcher, long numRetries, Duration firstBackoff)
现在我的实现如下(我没有使用backOff机制重试):
client.sendRequest()
.retry(e -> ((RestClientException) e).getStatus() == 500)
.subscribe();
答案 0 :(得分:0)
我不确定您使用的是哪个春季版本,在2.1.4中我有以下提示:
postgres
...这正是您想要的,对吧?
答案 1 :(得分:0)
您可能想看看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))
答案 2 :(得分:0)
我目前正在与Kotlin Coroutines + Spring WebFlux一起尝试:
似乎以下内容无效:
created_by