文章目录
一、OpenFeign简介
Feign为微服务架构下服务之间的调用提供了解决方案,Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。
OpenFeign添加了对于Spring MVC注解的支持,同时集成了Spring Cloud LoadBalancer和Spring Cloud CircuitBreaker,在使用OpenFeign时,提供负载均衡和熔断降级的功能。
二、OpenFeign与Feign的区别
Feign
- Feign是SpringCloud组件中一个轻量级RESTful的HTTP服务客户端
- Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务
- Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
OpenFeign
- OpenFeign 是SpringCloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等
- OpenFeign 的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
- OpenFeign集成了LoadBalancer和CircuitBreaker
三、OpenFeign使用案例
1、引入依赖
2、使用@EnableFeignClients开启Feign功能
3、创建feign客户端
在注解@FeignClient注解中,“cloud-payment-service”是服务名,使用这个名字来从Eureka服务列表中得到相应的服务,来创建LoadBalancer客户端,也可以使用url属性,指定服务的URL。
4、在消费者controller中调用服务
四、OpenFeign超时配置
默认Feign 客户端只等待1秒钟,但是服务端处理需要超过1秒钟,导致Feign 客户端不想等待了,直接返回报错。
为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。
feign:
client:
config:
default: #默认给所有feignClient配置超时时间
connectTimeout: 5000 #建立连接超时时间(毫秒)
readTimeout: 5000 #读取数据超时时间
feign:
client:
config:
cloud-payment-servcie: #给指定的服务(对应着一个feignClient)设置超时时间
connectTimeout