一、针对Feign重试
Feign自带Retry,默认是关闭状态。
首先定义FeignRetryConfig类
public class FeignRetryConfig {
/**
* 自定义重试机制
*
* @return
*/
@Bean
public Retryer feignRetry() {
// 参数分别代表:初始间隔时间为多少ms、重试最大间隔时间为多少ms、最大重试次数 注:下次间隔时间1.5倍递增,下一次间隔时间计算公式:period * Math.pow(1.5, attempt - 1)
return new Retryer.Default(100L, TimeUnit.SECONDS.toMillis(1L), 5);
}
}
实现Feign重试机制有两种方式:
1.全局方案
在自定义类FeignRetryConfig上加注解@Configuration
2.局部方案
@FeignClient注解增加 configuration = FeignRetryConfig.class
@FeignClient(name ="",url = "",configuration = FeignRetryConfig.class
建议选用局部方案,因为全局方案如果配置不当,会因为幂等请求带来数据问题。所以建议尽可能是需要做重试的地方单独控制。
二、针对RestTemplate重试
1.引入JAR