piotrek:
私は、応答は5xxのときに10秒待ってから要求を3回リトライしたいと思います。しかし、私は、私が使用できる方法が表示されません。オブジェクト上
WebClient.builder()
.baseUrl("...").build().post()
.retrieve().bodyToMono(...)
私は方法を見ることができます:
再試行回数が、遅延なしを条件に再試行
.retry(3, {it is WebClientResponseException && it.statusCode.is5xxServerError} )
バックオフや回数が、無症状で再試行
.retryBackoff
そこにもあるretryWhen
が、私はそれを使用するかどうかはわかりません
アレクサンダー銀行:
原子炉の余分を使用すると、同じようにそれを行うことができます:
.retryWhen(Retry.onlyIf(this::is5xxServerError)
.fixedBackoff(Duration.ofSeconds(10))
.retryMax(3))
private boolean is5xxServerError(RetryContext<Object> retryContext) {
return retryContext.exception() instanceof WebClientResponseException &&
((WebClientResponseException) retryContext.exception()).getStatusCode().is5xxServerError();
}