1.guava-retrying
<!-- guava-retrying -->
<dependency>
<groupId>com.github.rholder</groupId>
<artifactId>guava-retrying</artifactId>
<version>2.0.0</version>
</dependency>
static Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()
.retryIfException() // 抛出异常会进行重试
.retryIfResult(Predicates.equalTo(false)) // 如果接口返回的结果不符合预期,也需要重试
.withWaitStrategy(WaitStrategies.fixedWait(1, TimeUnit.SECONDS)) // 重试策略, 此处设置的是重试间隔时间
.withStopStrategy(StopStrategies.stopAfterAttempt(3)) // 重试次数
.build();
AtomicReference<HttpResponse<String>> response = new AtomicReference<>();
retryer.call(() -> {
gucciResponse.set(Unirest.get(fullUrl)
.header("X-Spree-Token", apiConfig.getXSpreeToken())
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.asString());
return response.get().getStatus() == 200;
});
return JSON.parseObject(response.get().getBody(), typeOfT);