feign调用出错问题

springboot版本2.2.0.RELEASE

1.feign本身的超时时间

1.feign:

hystrix:

enabled: true

client:

config:

default:

connect-timeout: 1000

read-timeout: 2000

 

2.熔断超时时间

hystrix:

command:

default:

execution:

timeout:

enabled: true

isolation:

thread:

timeoutInMilliseconds: 30000000

 

3.负载超时时间

 

ribbon:

ReadTimeout: 6000

ConnectTimeout: 2000

 

测试内容:

1.feign的超时时间和ribbon的超时时间

feign的配置会覆盖掉ribbon的,意思两个都配置的话,以feign设置的超时时间为主(可能与版本有关,测试结果均是基于2.2.0版本,新版本未测试)

ribbon的readTimeout时间指的是从发送到返回来的时间

ribbon会默认重试一次,但是feign超时的设置不会默认重试一次

 

2.报错返回

 

第一种:failed and no fallback available

场景1:超过feign或者ribbon的时间返回的错误。虽然没到熔断时间,但是此返回和熔断有关。若关闭熔断,返回的是Read timed out executing GET(超过feign或者ribbon的时间返回的错误)

场景2:还有可能是被调用方已经出错,比如被调用方已经抛出异常

第二种:timed-out and no fallback

超过熔断的时间的返回结果

 

feign整合了ribbon,开启熔断的:首次调用feign通常会失败,原因是:

熔断hystrix默认的超时时间是1秒,如果接口请求响应超过这个时间,就会报错。spring在装配bean的机制以及懒加载原因,feign的首次请求都会较慢,如果请求超过1秒,就会报错。

一种解决办法:将熔断时间加大

 

关于feign超时时间是不是 熔断加ribbon的时间和,还未研究;feign超时时间里面的设置源码未研究,疑惑中

 

以上是自己学习记录,如有错误,烦请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值