feign client的retry及超时设置

feign client的retry及超时设置,第1张

/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的效果。

直奔主题,FeignClient面对服务级有三种超时时间配置:

feign配置是在ribbon配置的基础上做了扩展,可以支持服务级超时时间配置,所以,feign配置和ribbon配置的效果应该是一样的。

SpringCloud对这两种配置的优先级顺序如下:

Feign局部配置 >Feign全局配置 >Ribbon局部配置 >Ribbon全局配置

在feign-core的jar包里有个Request类

在feign接口里加入这个参数就可以单独为接口单独设置超时时间了

调用的时候new 一下Options对象

这样就可以为那些单独需要很长时间才能完成的接口(比如大文件上传等)设置超时时间了。

参考: https://www.cnblogs.com/east7/p/15858644.html

https://www.jianshu.com/p/d4d183f0be5b


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11672979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存