OpenFeign调用超时如何处理?

提问者:帅平 问题分类:面试刷题
OpenFeign调用超时如何处理?
1 个回答
待我幼稚完
待我幼稚完
openFeign其实是有默认的超时时间的,默认分别是连接超时时间10秒、读超时时间60秒。在实际的配重如果openFeign没有设置对应得超时时间,那么将会采用Ribbon的默认超时时间。所以对于超时处理方案,我们有如下两种方案:
一、设置Ribbon的超时时间
设置很简单,在配置文件中添加如下设置
ribbon:
  # 值的是建立链接所用的时间,适用于网络状况正常的情况下, 两端链接所用的时间
  ReadTimeout: 5000
  # 指的是建立链接后从服务器读取可用资源所用的时间
  ConectTimeout: 5000

二、设置openFeign的超时时间(推荐)
openFeign设置超时时间非常简单,只需要在配置文件中配置,如下:
feign:
  client:
    config:
      ## default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间
      default:
        connectTimeout: 5000
        readTimeout: 5000
发布于:1年前 (2023-05-07) IP属地:四川省
命中不缺狗
命中不缺狗
default设置的是全局超时时间,对所有的openFeign接口服务都生效。但是正常的业务逻辑中可能涉及到多个openFeign接口的调用。此时我们可以给某个服务单独配置一个超时时间,配置如下:
feign:
  client:
    config:
      ## default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间
      default:
        connectTimeout: 5000
        readTimeout: 5000
      ## 为serviceC这个服务单独配置超时时间
      service-A:
        connectTimeout: 30000
        readTimeout: 30000
发布于:1年前 (2023-05-07) IP属地:四川省
巴黎小甜心
巴黎小甜心
default设置的是全局超时时间,对所有的openFeign接口服务都生效。但是正常的业务逻辑中可能涉及到多个openFeign接口的调用。此时我们可以给某个服务单独配置一个超时时间,配置如下:
feign:
  client:
    config:
      ## default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间
      default:
        connectTimeout: 5000
        readTimeout: 5000
      ## 为serviceC这个服务单独配置超时时间
      service-A:
        connectTimeout: 30000
        readTimeout: 30000
单个配置的超时时间将会覆盖全局配置。
发布于:1年前 (2023-05-07) IP属地:四川省
我来回答