1 Feign的配置
- 从Spring Cloud Edeware开始,Feign支持使用属性自定义。对于一个指定名称的Feign Client(例如该Feign Client的名称是feignName),Feign支持如下的配置项。
# 配置Feign feign: client: config: feignName: # 自定义FeignClient的名称 connectTimeout: 5000 # 建立连接的超时时间 readTimeout: 5000 # 读取的超时时间 # 配置Feign的日志级别 loggerLevel: full # Feign的错误解码器,相当于代码配置方式中的ErrorDecoder errorDecoder: feign.codec.ErrorDecoder.Default # 配置重试 retryer: feign.Retryer.Default # 配置请求拦截器 requestInterceptors: - BasicAuthRequestInterceptor - BaseRequestInterceptor # 配置熔断不处理404异常 decode404: false
- 如果需要改变所有的Feign Client,可使用默认的feign名称创建配置属性:
feign: client: config: default: connectTimeout: 5000 readTimeout: 5000 loggerLevel: basic
2 请求压缩
- Spring Cloud Feign支持对请求和响应进行Gzip压缩,以减少通信过程中的性能损耗。通过下面的参数可以开启请求和响应的压缩功能。
# 配置Feignfeign: compression: request: enabled: true # 开启请求压缩 response: enabled: true # 开启响应压缩
- 同时,我们也可以对请求的数据类型以及触发压缩大小的下限进行设置:
# 配置Feignfeign: compression: request: enabled: true # 开启请求压缩 min-request-size: 2048 # 设置触发压缩的大小下限 mime-types: text/html,application/xml,application/json #设置压缩的数据类型 response: enabled: true # 开启响应压缩
3 日志级别
- 在开发或者运行阶段的时候往往希望看到Feign请求过程的日志记录,默认情况下Feign的日志是没有开启的。如果想要属性配置方式来达到日志效果,只需要在application.yml中添加如下的内容即可:
# 配置Feignfeign: client: config: service-product: # 自定义FeignClient的名称 # 配置Feign的日志级别 loggerLevel: fulllogging: level: com.sunxiaping.order.feign.ProductFeignClient: debug # Feign日志只会对日志级别为debug做出响应
logging.level.xxx: debug:Feign日志只会对日志级别的debug做出响应。feign.client.config.service-product.loggerLevel:默认Feign的日志级别有四种。
- NONE(性能最佳,适用于生产):不记录任何日志(默认值)。
- BASIC(适用于生产环境追踪问题):仅记录请求方法、URL、响应状态码以及执行时间。
- HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
- FULL(比较适用于开发和测试环境定位问题):记录请求和响应的header、body和元数据。
- 也可以使用配置Bean的方式开启所有的日志功能:
@Configurationpublic class FeignConfiguration { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; }}