Feign 如何设置超时时间(connectionTimeout、readTimout)

对于这个问题网上有很多相关资料,大体上有两种方案,一种是通过设置 ribbon 的超时时间(因为 Feign 是基于 ribbon 来实现的,所以通过 ribbon 的超时时间设置也能达到目的),一种是直接设置 Feign 的超时时间,我将会在下边的篇幅里分别说一下如何通过application.yml 配置文件来设置超时时间。(注:这里是以 Feign 的默认客户端(Client.Default)来说的!!!!)

1、Ribbon

对于 ribbon 又分为全局配置和指定服务配置:

  • 全局配置
    对所有的服务该配置都生效
 ribbon:  
    ReadTimeout: 30000 #单位毫秒
    ConnectTimeout: 30000 #单位毫秒
  • 指定服务配置
    下边代码中的 annoroad-beta 是服务的名称,意思是该配置只针对名为 annoroad-beta 的服务有效,根据实际的需要替换成你自己的服务名
annoroad-beta:
  ribbon:
    ReadTimeout: 30000 #单位毫秒
    ConnectTimeout: 30000 #单位毫秒

2、Feign

与 Ribbon 一样,Feign 也分为全局配置和指定服务配置:

  • 全局配置
    下边代码中使用的 feign.client.config.default ,意思是所有服务都采用该配置
feign:
  client:
    config:
      default:
        connectTimeout: 10000 #单位毫秒
        readTimeout: 10000 #单位毫秒
  • 指定服务配置
    下边代码中使用的 feign.client.config.annoroad-beta,意思是该配置只针对名为 annoroad-beta 的服务有效,可以根据实际的需要替换成你自己的服务名
feign:
  client:
    config:
      annoroad-beta:
        connectTimeout: 10000 #单位毫秒
        readTimeout: 10000 #单位毫秒

3、总结

  • 如果同时配置了Ribbon、Feign,那么 Feign 的配置将生效
  • Ribbon 的配置要想生效必须满足微服务相互调用的时候通过注册中心,如果你是在本地通过 @FeignClient 注解的 url 参数进行服务相互调用的测试,此时 ribbon 设置的超时时间将会失效,但是通过 Feign 设置的超时时间不会受到影响(仍然会生效)
  • 综上所述建议使用 Feign 的来设置超时时间
  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cab5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值