使用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覆盖

Feign超时不生效问题的更多相关文章

  1. Hystrix配置实战及feign超时配置失效

    一.feign超时配置失效 最近项目上遇见feign超时配置总是失效.导致feign调用超过2s之后就会超时,会进行自动重试,重复调用两次服务,并且还是指定接口.这就更加奇怪.最后通过观察以及源码调试 ...

  2. 测试setsockopt设置超时是否生效代码

    // 测试setsockopt设置超时是否生效代码 #include <arpa/inet.h> #include <netinet/in.h> #include <st ...

  3. Feign超时设置

    转-原文:https://xli1224.github.io/2017/09/22/configure-feign/ 在分析 Feign 源码的时候,我们看到 Feign 构建代理对象是分了几层的,一 ...

  4. springcoud feign超时的问题

    配置 #开启超时控制 打开feign-hystix feign.hystrix.enabled=true ribbon.ReadTimeout= ribbon.ConnectTimeout= #如果e ...

  5. 定时任务与feign超时的纠葛,该咋优化?

    1 背景 业务定时器应用半夜经常会触发熔断异常的告警邮件 根据邮件提示的类找到归纳以下表格 编号 报错方法 接口所属应用 所属定时任务类 A VipTradeReportFeignService#ge ...

  6. Feign 超时设置

    问题描述 微服务之间使用 Feign 调用,偶发超时问题,配置如下: feign: client: config: default: connectTimeout: 10000 readTimeout ...

  7. springcloud 设置feign超时时间

    转载网址:http://www.pianshen.com/article/187038775/

  8. Feign 失败降级未生效和超时配置优先级问题

    一.问题: 生产环境服务A 通过feign调用 服务B,服务A报警信息如下: 详细分析发现问题 (1)服务A调用服务B失败,未触发声明的失败降级操作 (2)同时配置ribbon和feign超时时间,优 ...

  9. hystrix ,feign,ribbon的超时时间配置,以及原理分析

    背景,网上看到很多关于hystrix的配置都是没生效的,如: 一.先看测试环境搭建: order 服务通过feign 的方式调用了product 服务的getProductInfo 接口 //---- ...

随机推荐

  1. MySQL-16-主从复制进阶

    延时从库 介绍 延时从库: 是我们人为配置的一种特殊从库,人为配置从库和主库延时N小时 为什么要有延时从库 数据库故障 物理损坏,普通的主从复制非常擅长解决物理损坏 逻辑损坏,普通主从复制没办法解决逻 ...

  2. 神州战神U盘安装windows10系统,启动项制作好后,在bios中识别不到自己的u盘问题

    我笔记本是神州战神,启动盘做完了后,按快捷键F2,进入boot下进行设置,找了半天没找到自己的u盘,很郁闷,捣鼓了半天才搞定,以下是我修改之后的设置: 1.把Secure Boot设置为disable ...

  3. Python爬虫(二)——发送请求

    1. requests库介绍 ​ 在python中有许多支持发送的库.比如:urlib.requests.selenium.aiohttp--等.但我们当前最常用的还是requests库,这个库是基于 ...

  4. 【springcloud】Zuul 超时、重试、并发参数设置

    转自:https://blog.csdn.net/xx326664162/article/details/83625104 一. Zuul 服务网关 服务网关 = 路由转发 + 过滤器 1.路由转发: ...

  5. Android:绘制字符

    根据FontMetrics的特点,将字符在矩形框中居中显示:

  6. JS方式实现隐藏手机号码中间4位数

    1.截取 function test (value) { const start = value.slice(0, 3) const end = value.slice(-4) return `${s ...

  7. Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目

    前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...

  8. OpenCV 传统分割测试

    github官网源文件:https://github.com/opencv/opencv/tree/master/samples/python 最好是先克隆整个仓库下来,再测试里面的:floodfil ...

  9. 自定义Listener

    前言 为什么要自定义Listener? 通过自定义,可以在程序启动过程中监听特定事件,再回调处理逻辑. 自定义SpringApplicationRunListener 1.创建自定义SpringApp ...

  10. 移动端 uni-app 滑动事件 精确判断手指滑动方向

    移动端根据手指滑动操作判断滑动方向 设计思路: 1.根据移动端touchstart和touchend方法获取手指触摸屏幕的开始坐标和结束坐标 2.根据两个坐标计算与水平方向的夹角 3.根据夹角判断当前 ...