我正在使用Spring-Cloud + feign + spring-retry来帮助客户端重试请求(所有都是基于Kotlin的后端)
我的spring-boot conf像这样:
myApp:
ribbon:
OkToRetryOnAllOperations: true
retryableStatusCodes: 404, 503
(注意:OkToRetryOnAllOperations = true仅用于重试POST / PUT请求)
重试404和503 HTTP代码听起来不错,但是我无法弄清楚是否存在要重试的错误代码的“经典”列表或“默认”列表。 是否存在这种良好做法?
我们假设所有请求在服务器端都是幂等的(如果不是,则重试可能会导致问题)。
答案 0 :(得分:2)
作为一个非常粗略的经验法则:
4XX-客户做错了事
5XX-服务器做得不好
但这很大程度上取决于实际的API。
您应该重试500吗?可能是因为服务器在连接到数据库时出现意外故障。或者,也许您向其发送了意外的消息,而不是返回4XX,它崩溃了。
通常没有太多理由重试404,除非您期望此资源会出现。
唯一可重试的HTTP代码是408、502、503和504