spring cloud 微服务环境里面feignclient如何配置重试?
spring cloud 微服务里面有a,b,c三个微服务,之间都有使用feignclient调用其他服务,但是可能涉及到服务重启等,如何配置feignclient让他调不通的时候等待5秒钟再进行重试
发布于:1天前 IP属地:四川省
2 个回答
给一个新的案例,有对应的超时时间配置:
# 在 application.yml 中配置
feign:
client:
config:
default: # 全局默认配置
connectTimeout: 10000 # 连接超时10秒
readTimeout: 10000 # 读取超时10秒
retry:
enabled: true # 启用重试机制
max-attempts: 3 # 最大尝试次数(首次调用 + 重试2次)
back-off:
enabled: true # 启用退避策略(等待机制)
initial-interval: 2000 # 首次重试等待2秒
multiplier: 2.5 # 下一次重试等待时间为前一次的2.5倍,即第二次重试等待 2 * 2.5=5秒
# 重要:如果使用了Spring Cloud LoadBalancer,建议禁用其重试以避免叠加
spring:
cloud:
loadbalancer:
retry:
enabled: false # 避免Feign重试和LoadBalancer重试同时生效发布于:1天前 IP属地:四川省
可以直接在application.yaml文件中进行配置,feign支持配置重试,示例如下:
# 在服务A、B、C的application.yml中配置
feign:
retry:
enabled: true # 启用Feign重试
max-attempts: 4 # 总共尝试4次(初始1次 + 重试3次)
backoff:
enabled: true # 启用退避策略(即重试等待)
initial-interval: 2000 # 首次重试间隔为2秒
multiplier: 2.5 # 后续重试间隔为前一次的2.5倍(第二次:2 * 2.5=5秒)
ribbon:
ConnectTimeout: 1000 # 连接超时1秒
ReadTimeout: 5000 # 读超时5秒这个配置示例的重试过程描述如下:首次调用失败。
第一次重试(第1次重试):等待 2秒 后发起。
第二次重试(第2次重试):如果再次失败,等待时间变为 2秒 * 2.5 = 5秒,满足您等待5秒重试的要求。
第三次重试(第3次重试):如果仍然失败,等待时间变为 5秒 * 2.5 = 12.5秒。
若所有尝试(共4次)均失败,则最终返回错误。发布于:1天前 IP属地:四川省
我来回答
您需要 登录 后回答此问题!
