- 推荐序一
- 推荐序二
- 推荐序三
- 推荐语
- 前言
- 第1章 基础知识
- 第2章 微服务构建:Spring Boot
- 第3章 服务治理:Spring Cloud Eureka
- 第4章 客户端负载均衡:Spring Cloud Ribbon
- 第5章 服务容错保护:Spring Cloud Hystrix
- 第6章 声明式服务调用:Spring Cloud Feign
- 第7章 API网关服务:Spring Cloud Zuul
- 第8章 分布式配置中心:Spring Cloud Config
- 第9章 消息总线:Spring Cloud Bus
- 第10章 消息驱动的微服务:Spring Cloud Stream
- 附录 A Starter POMs
- 后记
其他配置
请求压缩
Spring Cloud Feign支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗。我们只需通过下面两个参数设置,就能开启请求与响应的压缩功能:
feign.compression.request.enabled=true
feign.compression.response.enabled=true
同时,我们还能对请求压缩做一些更细致的设置,比如下面的配置内容指定了压缩的请求数据类型,并设置了请求压缩的大小下限,只有超过这个大小的请求才会对其进行压缩。
feign.compression.request.enabled=true
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048
上述配置的feign.compression.request.mime-types和feign.compression.request.min-request-size均为默认值。
日志配置
Spring Cloud Feign在构建被@FeignClient注解修饰的服务客户端时,会为每一个客户端都创建一个feign.Logger实例,我们可以利用该日志对象的DEBUG模式来帮助分析Feign的请求细节。可以在application.properties文件中使用logging.level.<FeignClient>的参数配置格式来开启指定 Feign 客户端的 DEBUG 日志,其中<FeignClient>为Feign 客户端定义接口的完整路径,比如针对本章中我们实现的HelloService可以按如下配置开启:
logging.level.com.didispace.web.HelloService=DEBUG
但是,只是添加了如上配置,还无法实现对 DEBUG 日志的输出。这时由于 Feign 客户端默认的Logger.Level对象定义为NONE级别,该级别不会记录任何Feign调用过程中的信息,所以我们需要调整它的级别,针对全局的日志级别,可以在应用主类中直接加入Logger.Level的Bean创建,具体如下:
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
public static void main(String[]args){
SpringApplication.run(ConsumerApplication.class,args);
}
}
当然也可以通过实现配置类,然后在具体的 Feign 客户端来指定配置类以实现是否要调整不同的日志级别,比如下面的实现:
@Configuration
public class FullLogConfiguration {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
@FeignClient(name="HELLO-SERVICE",configuration=FullLogConfiguration.class)
public interface HelloService {
...
}
在调整日志级别为FULL 之后,我们可以再访问一下之前的http://localhost:9001/feign-consumer接口,这时我们在feign-consumer的控制台中就可以看到类似下面的请求详细日志:
对于Feign的Logger级别主要有下面4类,可根据实际需要进行调整使用。
- NONE:不记录任何信息。
- BASIC:仅记录请求方法、URL以及响应状态码和执行时间。
- HEADERS:除了记录BASIC级别的信息之外,还会记录请求和响应的头信息。
- FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论