• 14.Spring-Cloud-Feign中请求压缩配置和日志配置


       请求压缩配置

        Spring Cloud  feign支持对请求与响应进行GZIP压缩,以减少通信中的性能损耗,主要是在spring-cloud-netflix-core.jar文件中.

    默认对请求和相应压缩是禁用的,从
    org.springframework.cloud.netflix.feign.encoding.FeignContentGzipEncodingAutoConfiguration类中可以看到请求压缩是禁用的
    源码:
    @ConditionalOnProperty(value = "feign.compression.request.enabled", matchIfMissing = false)
    org.springframework.cloud.netflix.feign.encoding.FeignAcceptGzipEncodingAutoConfiguration.class类中可以看到响应压缩是禁用的
    源码:

    @ConditionalOnProperty(value = "feign.compression.response.enabled", matchIfMissing = false)

    org.springframework.cloud.netflix.feign.encoding.FeignClientEncodingProperties类中配置了一些默认的编码属性
    源码:
    @ConfigurationProperties("feign.compression.request")
    public class FeignClientEncodingProperties {
        /**
         * The list of supported mime types.
         */
        private String[] mimeTypes = new String[]{"text/xml", "application/xml", "application/json"};
        /**
         * The minimum threshold content size.
         */
        private int minRequestSize = 2048;

    }

    在application.properties中自定义请求压缩

    feign.compression.request.enabled=true
    feign.compression.response.enabled=true
    #默认配置
    feign.compression.request.mine-types=text/xml,application/xml,application/json 
    #默认配置
    feign.compression.request.min-request-size=2048
    
    

    日志配置

    在构建@FeignClient注解修饰的服务客户端时,会为一个客户端都创建一个feign.Logger实例,可以利用该日志对象的DEBUG模式来分析Feign的请求细节。具体配置在application.properties中配置:

    logging.level.<FeignClient>=DEBUG开启指定Feign客户端的DEBUG模式日志;

    <FeignClient>为Feign客户端定义接口的完整路径

    如:
    logging.level.com.niugang.service.HelloService=DEBUG

    只添加上面配置还无法实现对DEBUG日志的输出,以因为Feign客户端默认的logger.level对象定义为none级别,所以不会记录feign调用过程中的信息。

    feign中日志级别
      /**
       * Controls the level of logging.
       */
      public enum Level {
        /**
         * No logging.不记录日志
         */
        NONE,
        /**
    *只记录请求方法和URL,以及响应状态代码和执行时间。
         * Log only the request method and URL and the response status code and execution time.
         */
        BASIC,
        /**
    *记录请求和响应头基本信息。
         * Log the basic information along with request and response headers.
         */
        HEADERS,
        /**
    *记录请求和响应的标头、正文和元数据
         * Log the headers, body, and metadata for both requests and responses.
         */
        FULL

      }

    创建方式一:在启动类上配置

    @SpringBootApplication
    @EnableDiscoveryClient
    //扫描声明它们是feign客户端的接口(通过@FeignClient)
    @EnableFeignClients
    public class Application {
    @Bean
    Logger.Level feignLoggerLevel(){
    return Logger.Level.FULL;
    }
    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    }
     


    测试

       输入:http://localhost:9001/feign-consumer1/zhangsan

       输入:http://localhost:9001/feign-consumer2/zhangsan/15094031789

    创建方式二:定义配置类

    1.创建专门的配置类

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import feign.Logger;
    @Configuration
    public class FeignLoggerConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
    return Logger.Level.FULL;
    }
    }

    2.在服务调用接口上进行绑定

    //value:调用服务的名
    //fallback:配置服务降级类
    //configuration:定制客户端的自定义@configuration。可以包含对组成客户端的片段的重写@Bean定义

    @FeignClient(value="service-provide",fallback=ServiceProvideFallBack.class,configuration=FeignLoggerConfig.class)

    测试效果和在启动类上配置效果一样

     微信公众号

     

     

  • 相关阅读:
    TI达芬奇平台测试
    V4L2 常用控制命令
    Linux 线程编程
    HMM
    PCA & ICA
    SVD分解(转载)
    Factor analysis
    Mixtures of Gaussians and the EM algorithm
    Arduino 单个按键控制led灯闪烁、常亮、关闭
    django计算当前日期最近一周日期范围
  • 原文地址:https://www.cnblogs.com/niugang0920/p/12193286.html
Copyright © 2020-2023  润新知