自动重试请求的http代码是什么?

时间:2018-08-09 14:48:21

标签: spring spring-boot kotlin spring-cloud-feign spring-retry

我正在使用Spring-Cloud + feign + spring-retry来帮助客户端重试请求(所有都是基于Kotlin的后端)

我的spring-boot conf像这样:

myApp:
  ribbon:
    OkToRetryOnAllOperations: true
    retryableStatusCodes: 404, 503

(注意:OkToRetryOnAllOperations = true仅用于重试POST / PUT请求)

重试404和503 HTTP代码听起来不错,但是我无法弄清楚是否存在要重试的错误代码的“经典”列表或“默认”列表。 是否存在这种良好做法?

我们假设所有请求在服务器端都是幂等的(如果不是,则重试可能会导致问题)。

1 个答案:

答案 0 :(得分:2)

作为一个非常粗略的经验法则:
4XX-客户做错了事
5XX-服务器做得不好

但这很大程度上取决于实际的API。
您应该重试500吗?可能是因为服务器在连接到数据库时出现意外故障。或者,也许您向其发送了意外的消息,而不是返回4XX,它崩溃了。

通常没有太多理由重试404,除非您期望此资源会出现。

唯一可重试的HTTP代码是408、502、503和504