【问题标题】:resilience4j Retry retrofit弹性4j重试改造
【发布时间】:2021-03-07 10:02:53
【问题描述】:

有没有办法以类似于 circuitBreacker 的方式添加重试配置?

val circuitBreakerConfig = CircuitBreakerConfig.custom()
        .slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
        .failureRateThreshold(10.0F)
        .build()

    val circuitBreaker = CircuitBreaker.of("name", circuitBreakerConfig)
 
    val retrofit = Retrofit.Builder()
        .baseUrl(baseUrl)
        .addCallAdapterFactory(
            CircuitBreakerCallAdapter.of(circuitBreaker) {
                it.code() == 500
            }
        ).addConverterFactory(GsonConverterFactory.create())
        .client(httpClient)
        .build()

我想使用的重试配置是这样的:

val retryConfig = RetryConfig.custom<Any>()
        .maxAttempts(3)
        .waitDuration(Duration.ofSeconds(120))
        .retryExceptions(RuntimeException::class.java)
        .build()

【问题讨论】:

    标签: java kotlin retrofit2 resilience4j


    【解决方案1】:

    是的,你可以

    private Retrofit buildRetrofitWithRetry(
            final OkHttpClient okHttpClient, final String baseUrl) {
        return new Retrofit.Builder()
                .client(okHttpClient)
                .addCallAdapterFactory(RetryCallAdapter.of(retry))
                .baseUrl(baseUrl)
                .addConverterFactory(JacksonConverterFactory.create())
                .build();
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 2019-07-12
      • 2020-07-31
      • 2020-11-03
      • 2020-07-18
      • 1970-01-01
      • 2021-04-17
      • 2019-10-23
      相关资源
      最近更新 更多