feign client的retry及超时设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了feign client的retry及超时设置相关的知识,希望对你有一定的参考价值。

参考技术A /Users/xixicat/.m2/repository/io/github/openfeign/feign-core/9.3.1/feign-core-9.3.1-sources.jar!/feign/Retryer.java

/Users/xixicat/.m2/repository/io/github/openfeign/feign-core/9.3.1/feign-core-9.3.1-sources.jar!/feign/Retryer.java

这里attempt初始值为1,即把第一次的请求也算上去了,先执行attempt >= maxAttempts判断,再执行attempt++。因此maxAttempts设置为2表示重试1次。
/Users/xixicat/.m2/repository/io/github/openfeign/feign-core/9.3.1/feign-core-9.3.1-sources.jar!/feign/SynchronousMethodHandler.java

输出

/Users/xixicat/.m2/repository/io/github/openfeign/feign-core/9.3.1/feign-core-9.3.1-sources.jar!/feign/Request.java

feign client默认的connectTimeout为10s,readTimeout为60.单纯设置timeout,可能没法立马见效,因为默认的retry为5次.因此,如果期望fail fast的话,需要同时自定义timeout以及retry的参数,而且要确保反向代理,比如nginx的proxy_connect_timeout以及proxy_read_timeout要大于feign的配置才能见效,不然对外部用户感知到的还是nginx的504 Gateway Time-out,起不到fallback的效果。

springcoud feign超时的问题

配置

#开启超时控制 打开feign-hystix
feign.hystrix.enabled=true
ribbon.ReadTimeout=60000
ribbon.ConnectTimeout=60000
#如果enabled设置为false,则请求超时交给ribbon控制
hystrix.command.default.execution.timeout.enabled=true
#设置超时时间  单位是毫秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000  

熔断器一定要引入

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

代码

@Component
public class SendInfoAuditFallBack implements SendInfoAudit {
    private Logger logger = LoggerFactory.getLogger(SendInfoAuditFallBack.class);

    @Override
    public String proclmInfo(String plyNo) {
        logger.error("请求定责系统异常:" + plyNo);
        return "error 401";
    }
}
@FeignClient(name="claimaudit",fallback = SendInfoAuditFallBack.class)
public interface SendInfoAudit {
    @RequestMapping(value = "/fixDutyServiceController/proclmInfo")
    public String proclmInfo(@RequestParam("plyNo") String plyNo);
}

 

以上是关于feign client的retry及超时设置的主要内容,如果未能解决你的问题,请参考以下文章

Feign Client超时时间配置以及单独给某接口设置超时时间方法记录

Feign 超时设置

HTTP调用(二):feign调用的超时

open feign的超时配置及源码跟踪

feign服务间调用超时时间

使用 Netflix Feign 和 Hystrix 设置请求超时