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及超时设置的主要内容,如果未能解决你的问题,请参考以下文章