zoukankan      html  css  js  c++  java
  • Feign超时不生效问题

    使用Feign作为RPC调用组件,可以配置连接超时和读取超时两个参数


    使用Feign配置超时需要注意:Feign内部使用了负载均衡组件Ribbon,
    而Ribbon本身也有连接超时和读取超时相关配置
    一、默认不配置相关参数的情况下:


    通过测试发现超时读取使用了Ribbon的默认超时时间,即1s。此时Feign的默认超时时间
    60s不会生效。

    源码分析:Ribbon的默认超时时间 1s。 Feign的默认读取超时时间60s

     


    二、 配置相关参数的情况下:


    Fegin可以配置全局超时时间:
    feign.client.config.default.readTimeout=3000
    feign.client.config.default.connectTimeout=3000
    注意:如果只配置读超时,只feign.client.config.default.readTimeout=3000 是不会生效的
    要配置Feign读取超时,必须同时配置连接超时

    若是想针对单独的Feign Client(client-name)设置超时时间,可以把default替换为Client的name
    例如:
    feign.client.config.client-name.readTimeout=3000
    feign.client.config.client-name.connectTimeout=3000
    单独的超时可覆盖全局超时

    同时配置Feign和Ribbon的参数

    feign.client.config.default.readTimeout=3000
    feign.client.config.default.connectTimeout=3000
    ribbon.ReadTimeout=4000
    ribbon.ConnectTimeout=4000
    最终生效的是Feign的超时

    源码分析:同时配置Feign和Ribbon的超时,以Feign为准
    在LoadBalancerFeignClient源码
    如果Request.Options不是默认值,就会创建一个FeignOptionsClientConfig代替原来Ribbon的DefaultClientConfigImpl,导致Ribbon的配置被Feign覆盖

  • 相关阅读:
    docker-compose运行nginx
    docker后台持续运行
    docker-compose运行tomcat
    集群session解决方案
    docker运行mysql
    docker运行svn
    mongodb数据的导出和导入
    mongodb副本集的docker化安装
    grafana使用json数据源监控数据
    docker化安装grafana
  • 原文地址:https://www.cnblogs.com/wa1l-E/p/13994240.html
Copyright © 2011-2022 走看看