feign超时不生效问题

📣使用Feign配置超时需要注意:Feign内部使用了负载均衡组件Ribbon,而Ribbon本身也有连接超时和读取超时相关配置

  1. 默认不配置相关参数的情况下:

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

60s不会生效。

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

  1. 配置相关参数的情况下:

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值