• 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覆盖

  • 相关阅读:
    ios风场
    ios avplayer 视频播放器
    iOS 微信支付
    ios 支付宝
    IOS 归档
    ios 友盟统计
    iOS OC部分 NSString
    ios 程序员
    Ios 一个很好用的图片选择器
    mac系统U盘装机 一个被系统坑过的路人
  • 原文地址:https://www.cnblogs.com/wa1l-E/p/13994240.html
Copyright © 2020-2023  润新知