• SpringCloud常用配置


    hystrix的超时时间

    hystrix.command.default.execution.timeout.enabled=true
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000

    ribbon的超时时间

    #对当前实例的重试次数
    ribbon.MaxAutoRetries: 1

    #切换实例的重试次数
    ribbon.MaxAutoRetriesNextServer: 2

    #请求处理的超时时间
    ribbon.ReadTimeout: 60000

    #请求连接的超时时间
    ribbon.ConnectTimeout: 60000

    #对所有操作请求都进行重试
    ribbon.OkToRetryOnAllOperations: false

    feign开启Gzip压缩

    Spring Cloud Feign支持对请求与响应的压缩,以提高通信效率,在服务消费者配置文件开启压缩支持和压缩文件的类型即可

    #feign 请求与响应的压缩
    feign.compression.request.enabled=true
    feign.compression.response.enabled=true
    feign.compression.request.mime-types=text/xml,application/xml,application/json
    feign.compression.request.min-request-size=2048
    
    feign开启日志

    feign开启日志有两种方式,一种是使用配置文件,一种是使用java代码,下面将介绍代码方式
    创建FeignLogConfig类,添加一个LoggerBean

    @Configuration
    public class FeignLogConfig {
    
    /**
     * 日志level有4个级别
     * 1.NONE,不记录任何日志
     * 2.BASIC,仅记录请求方法、URL以及响应状态码和执行时间
     * 3.HEADRES,除了BASIC以外的还会记录请求和响应的头信息
     * 4.FULL,所有
     * @return
     */
    @Bean
    Logger.Level feignLogger(){
        return Logger.Level.FULL;
    }
    feign替换JDK默认的URLConnection为okhttp
    使用okhttp,能提高qps,因为okhttp有连接池和超时时间进行调优
    • 在服务消费者中,添加feign-okhttp依赖
    <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency>
    feign.httpclient.enabled=false
    feign.okhttp.enabled=true

    • 创建OkHttpConfig类,添加okhttp的bean
    • /**
       * 配置okhttp与连接池
       * ConnectionPool默认创建5个线程,保持5分钟长连接
       */
      @Configuration
      @ConditionalOnClass(Feign.class)
      @AutoConfigureBefore(FeignAutoConfiguration.class)
      public class OkHttpConfig {
       
      @Bean
      public okhttp3.OkHttpClient okHttpClient(){
          return new okhttp3.OkHttpClient.Builder()
                  //设置连接超时
                  .connectTimeout(10 , TimeUnit.SECONDS)
                  //设置读超时
                  .readTimeout(10 , TimeUnit.SECONDS)
                  //设置写超时
                  .writeTimeout(10 , TimeUnit.SECONDS)
                  //是否自动重连
                  .retryOnConnectionFailure(true)
                  .connectionPool(new ConnectionPool(10 , 5L, TimeUnit.MINUTES))
                  .build();
      }
     
  • 相关阅读:
    WCF系列(五) 也谈序列化(下)
    优秀程序员的十个习惯
    WCF系列(九) WCF安全系列(四) WSHttpBinding绑定之Transport安全模式
    TCP/IP 协议简单分析
    技巧:在Silverlight应用程序中进行数据验证
    WCF系列(三) WCF配置文件注释
    [转]ASP.NET(C#)常用代码30例
    服务器端 在iframe中控制父窗体div并调用父窗体Button
    GridView的模版列中加入按钮,触发按钮事件后,如何获取该行的某个值?
    通用分页 模块
  • 原文地址:https://www.cnblogs.com/linqing001/p/14149298.html
Copyright © 2020-2023  润新知