7

これまでのところ、例外の場合、以下のように再試行する偽のクライアントがあります

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>
4

1 に答える 1