OpenFeign
一、OpenFeign介绍
OpenFeign包含了LoadBalance的相关功能。集成了LoadBalance。也是客户端的组件,主要完成微服务之间的调用和负载均衡。它使得Web服务客户端变得容易,只需要创建接口并对其进行注释。
二、OpenFeign用法
在服务消费者和服务提供者之间加一个接口,解耦合。
为避免和80混淆,新建一个微服务。
新建一个微服务
a
b
c 业务类
客户端feign80—>公用api—>服务端8001 8002
d 修改cloud-api-commons
支付微服务的Feign接口:
80 通过 PayFeignApi 的/pay/add 调用 8001 的/pay/add
PayController中是微服务8001的接口。 PayFeignApi 中是8001对外暴露的服务清单(url相同即可)。
e 拷贝之前的80工程
f 修改Controller层的调用
因为OrderController是含有Feign的,所以不再调用service层,直接调用支付。
订单调用支付
测试
三、OpenFeign的高级特性
1、OpenFeign的超时控制
在Spring Cloud微服务架构中,大部分公司都是利用OpenFeign进行服务间的调用,而比较简单的业务使用默认配置是不会有多大问题的,但是如果是业务比较复杂,服务要进行比较繁杂的业务计算,那后台很有可能会出现Read Timeout这个异常,因此定制化配置超时时间就有必要了。
- 自己写bug,测试出feign的默认调用超时时间
结论:OpenFeign默认等待60秒,超过后报错。
注意!要把8002服务关掉,只开启8001, 否则就会成功,因为8002没有设置62秒的延时。而且8001 8002是交替提供服务的。
全局与局部同时出现,听局部的。
2、OpenFeign的重试机制
重试机制默认是关闭的。
3、OpenFeign默认HttpClient修改
用Apache HttpClient5替换 OpenFeign默认的HttpURLConnection,性能更好。
4、OpenFeign的请求/响应压缩
5、OpenFeign的日志打印功能