请求压缩
Spring Cloud Feign 支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗,我们只需要通过下面二个参数设置,就能开启请求与响应的压缩功能,yml配置格式如下:
feign:
compression:
request:
enabled: true
response:
enabled: true
同时,我们还能对请求压缩做一些更细致的设置,比如指定压缩的请求数据类型,并设置了请求压缩的大小下限,只有超过这个大小的请求才会对其进行压缩,示例如下:
feign:
compression:
request:
enabled: true
mime-types: text/xml,application/xml,application/json
min-request-size: 2048
response:
enabled: true
日志配置
Spring Cloud Feign 在构建被 @FeignClient 注解修饰的服务客户端时,会为每一个客户端都创建一个feign.Logger 实例,我们可以利用该日志对象的DEBUG模式来帮助分析Feign 的请求细节,可以在 application.yml 中使用 loggin.level.<FeignClient> 的参数配置格式来开启指定 Feign 客户端的 Debug 日志,其中 <FeignClient> 为 Feign 客户端定义接口的完整路径,配置示例如下:
logging:
level:
org.lixue.HelloWorldClient: debug
由于Feign客户端默认的 Logger.Level 对象定义为 NONE 级别,该级别不会记录任何 Feign 调用过程的信息,所以我们需要调整他的级别,针对全局的日志级别,可以在应用主类中直接加如 Logger.Level 的 Bean,示例如下:
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaFeignConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaFeignConsumerApplication.class, args);
}
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
如果需要设置具体的 Feign 客户端日志级别,可以实现配置类,然后在 @FeignClient 注解中指定配置,示例如下:
@Configurable
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
然后在Feign客户端接口的 @FeignClient 注解指定配置,示例如下:
@FeignClient (value = "ORG.LIXUE.HELLOWORLD", configuration = FeignConfig.class)
public interface HelloWorldClient extends HelloWorldService {
}
Logger.Level 的具体级别如下:
- NONE:不记录任何信息
- BASIC:仅记录请求方法、URL以及响应状态码和执行时间
- HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息
- FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据