影响到feign接口超时时间的主要有三类配置:feign、ribbon和hystrix。
feign的配置:

feign:
	client:
		config:
			default:	// 这个代表 服务,default为任意服务,可以指定服务名来指定调用该服务时的超时时间
				connectTimeout: 毫秒时间,建立连接的超时时间,一般只在发现服务时用到
				readTimeout: 毫秒时间 ,接口请求的超时时间

ribbon的配置:

ribbon:
	ReadTimeout: 毫秒时间, 同feign的
	ConnectTimeout:毫秒时间 , 同feign的

hystrix:

hystrix:
  command:
    default:	// 这个代表接口,default为任意接口, 可以配置为指定接口(Feign接口类名#方法名(方法参数类型)),如:FeignXXClient#testMethod(String, String)
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 毫秒时间

feign和ribbon的配置二选一即可(如果都配置了,会以feign的配置为准),因为这两个配置都相当于是ribbon的配置,不同点在于feign的配置在ribbon的基础上做了扩展,可以支持配置服务级别的超时时间,并且如果feignClient中使用了url,超时时间也可以生效(ribbon当指定了url时是不会执行到的,因为指定了url就不需要走ribbon的负载均衡逻辑)。
hystrix配置的超时时间理论上应该要比 feign和ribbon的要大,因为feign和ribbon可以配置失败重试。当然最终的超时时间是以feign(或ribbon)和hystrix中最小时间为准。所以在单独设置某个接口的超时时间时,如果设置的超时时间比feign的要小,则可以生效。如果设置的时间比feign的要大,则会以feign的超时时间为准。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐