これまでのところ、例外の場合、以下のように再試行する偽のクライアントがあります
Retryer<ClientResponse> retryer = RetryerBuilder.<ClientResponse>newBuilder()
.retryIfExceptionOfType(FeignException.class)
.withStopStrategy(StopStrategies.stopAfterAttempt(retryCount))
.withWaitStrategy(WaitStrategies.exponentialWait(maxWaitSeconds, TimeUnit.SECONDS))
.build();
retryer.call(() -> {
return client.doStuffs(someInput); }
);
最近、以下のように、このカスタム リトライアから組み込みの偽リトライアに移行しようとしました。
Feign client = Feign.builder()
.decoder(jacksonDecoder)
.encoder(jacksonEncoder)
.logger(slf4jLogger)
.client(okHttpClient)
.retryer(new Retryer.Default(
SECONDS.toMillis(minWaitSeconds),
SECONDS.toMillis(maxWaitSeconds),
retryCount
))
.requestInterceptor(new BasicAuthRequestInterceptor(clientConfig.getUser(), clientConfig.getPassword()))
.target(target);
client.doStuffs(someInput);
理解していたのは、偽のクライアント自体が例外を処理するということでしたが、明らかにそうではありません。クライアントが をスローする5xx
と、再試行なしで例外が発生します。実装が再試行するために他に必要なものはありますか?
このサービスは dropwizard にあります。git と SO のスレッドは主に春/リボンの周りにありますが、私には当てはまりません。
出発地
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
<version>${feign.version}</version>
</dependency>