由于项目需要,开发的系统需要调用外部系统API接口,所在项目使用的是Spring Cloud 分布式架构,利用自身提供的FeignClient作为内部和外部服务调用的工具,需要配置超时重试机制,用来满足业务以及系统上的需要。
我们的需求是当调用API发生网络错误或者超时异常时,需要连续调用2次接口,第一次间隔5分钟,第二次调用间隔10分钟,系统最大超时时间是150000毫秒。
项目代码如下:
首先是API基础配置信息,统一由FeignClientConfiguration 提供:
import feign.Request;
import feign.Retryer;
import feign.auth.BasicAuthRequestInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class FeignClientConfiguration {
@Value("${key}")
private String consumerKey;
@Value("${password}")
private String consumerPassword;
@Bean
public BasicAuthRequestInterce