FeigninClient里如何进行重试(Retry)和超时(timeout)配置

从源代码里了解默认值

默认最大尝试次数

重试逻辑

可以看到,attampt的初始值为1,即第一个请求被累加。 首先,执行try> = maxAttempts判断,然后执行该尝试。 也就是说,将maxAttempts设置为2意味着重试一次。

默认超时时间

参数配置

配置超时

配置重试

返回时间

默认重试返回时间(1s connectTimeout,1s readTimeout)

在一定时间内服务的请求百分比(ms)

没有重试(1s connectTimeout,1s readTimeout)

在一定时间内服务的请求百分比(毫秒)

没有重试(5s connectTimeout,5s readTimeout)

在一定时间内服务的请求百分比(毫秒)

总结

FeigninClient的默认connectTimeout为10s,readTimeout为60。仅设置超时可能不会立即生效,因为默认重试次数为5次。 因此,如果想要快速失败,则必须同时自定义超时和重试的参数,并应确保反向代理。 例如,nginx的proxy_connect_timeout和proxy_read_timeout必须大于feign的配置才能生效。 否则,nginx的504网关超时仍然会被外部用户感知,并且无法实现回滚效果。

0

发表评论

您的电子邮箱地址不会被公开。