springcloud中fegin调用常见问题
注: 本文基于Springcloud Edgware版本
一、fegin调用首次失败问题
1、Fegin简介:
feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解,Feign 整合了Ribbon。
2、原因分析:
fegin整合Hystrix组件后,Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入自定义的fallback代码,往往首次请求会比较慢(由于Ribbon是懒加载的,在首次请求时,才会开始初始化相关类),这个响应时间可能就大于1秒了,出现调用失败
3、解决方案
- 增加Hystrix的超时时间,默认为1s
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 10000
- 配置饿加载(推荐使用)
ribbon:
eager-load:
clients: project1,project2
enabled: true
- 禁用Hystrix超时(不推荐使用)
hystrix:
command:
default:
execution:
timeout:
enabled: false
- 为fegin全局禁用hystrix(此种方式较为极端,不建议使用)
fegin:
hystrix:
enabled: false
来源:https://blog.csdn.net/luoyuan323/article/details/98725115