![微服务分布式架构基础与实战:基于Spring Boot + Spring Cloud](https://wfqqreader-1252317822.image.myqcloud.com/cover/390/31186390/b_31186390.jpg)
3.5 Feign的配置
Feign在Spring Boot微服务的application资源配置文件中支持传输数据压缩配置、日志配置和超时配置。传输数据压缩配置可减少Feign的Client端调用接口所需的字节数量,加快传输速度。日志配置方便管理Feign自身调用的日志信息,在实际生产中可以减少日志存储量,并方便日志的归档、总结和管理。超时配置可定义在Feign的Client端调用接口时,Server端接口多久不响应则Feign进行降级回退处理。降级回退可参见3.6节。
3.5.1 传输数据压缩配置
Feign支持对响应进行GZIP压缩,用于提高Server端和Client端的通信效率,在相应的资源配置文件中进行配置即可,不需要进行额外操作,配置代码如下。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_95_1.jpg?sign=1739284694-xAheBR4y5SqWOnURAfqGm9Eg09xrCnap-0-1756459a0655d3c88cfa1b24740745fe)
3.5.2 日志配置
Feign中的每个@FeignClient注解都会生成一个FeignClient实例,每个FeignClient实例都会对应一个Feign.Logger日志输出实例,每个Feign.Logger日志输出实例都会根据资源配置文件中规定的日志输出规范,进行日志输出,配置代码如下。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_95_2.jpg?sign=1739284694-KArs2acwqgfDzKzs5yOmNEJb8oUswhyM-0-649956fc47f770789d5a47ff7d442d9f)
none下的日志输入如图3-23所示。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_95_3.jpg?sign=1739284694-NgrSyya9z37aMhf9uMEg1eIb1PXjz1gA-0-d066e0f4edce4d3a23618112acf68a4e)
图3-23
none级别不会输出任何Feign相关的日志,图3-23中的日志是System.out.print输出的。Feign通过不同的日志级别输出不同规范的日志。如表3-7所示,可以设置任意FeignClient日志级别。
表3-7 FeignClient的日志级别及释义
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_95_4.jpg?sign=1739284694-sqKJET10QB5s3sosfJoQ9qL5FJE3I5Su-0-e3f424359d3fc175e2820c3448197c98)
Feign默认使用full级别记录日志。
3.5.3 超时配置
Feign可以通过内置的Ribbon负载均衡器设置超时时间,配置代码如下。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_96_1.jpg?sign=1739284694-rFugnc4rOwUHcoazocj0WiTtdcVUBbJw-0-0ca34518a65cd2f169e72f33600bf7ee)
以上时间单位均为毫秒,为了显示相应效果,此处设置100毫秒。如果Feign调用端设置了如上配置,Feign的服务端可以增加相应的线程停止代码,方便测试超时后的效果,部分代码如下。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_96_2.jpg?sign=1739284694-wD3lNzbO7brwmgEZ8gFcJslOIo2809W9-0-b7ee1943deb61f312b90d59685ae1025)
若每次服务调用该接口停留时间过长,Feign则会直接进行降级回退处理,运行结果如图3-24所示。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_96_3.jpg?sign=1739284694-BwAjp85EYoXLcLKAICOmpKOL1xylvMGi-0-83cea90c07d05eab566f74aabda161bf)
图3-24
虽然服务端依旧进行处理,但因调用端认为此响应时间超长而直接进行回退,并不因为接口错误进行回退。服务端日志如图3-25所示。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_96_4.jpg?sign=1739284694-msm1Fh6l3SCLyUsmR3I8xr86EMc16CTp-0-e08ced3b9400145d5371f7fbb2083bb1)
图3-25