在 Spring Cloud 生态中,Feign(具体来说是 OpenFeign)的重试机制触发逻辑稍微有些复杂,因为它涉及到 OpenFeign 原生重试机制 和 Spring Cloud 负载均衡器(Ribbon 或 Spring Cloud LoadBalancer)重试机制 的结合。 以下是 Feign 调用失败时,重试机制被触发的详细原理和条件: --- 一、 触发重试的核心条件(何时会重试?) 在底层,OpenFeign 的原生重试机制只认一种异常:。 只有当 Feign 客户端抛出 时,底层的 (重试器)才会触发重试逻辑。 具体来说,以下几种情况会触发重试: 1. 网络层面的 IOException(最常见) 连接超时(Connection Timeout): 无法与目标服务建立 TCP 连接。 读取超时(Read Timeout): 连接建立成功,但目标服务处理太慢,未能在规定时间内返回响应。 连接拒绝(Connection Refused): 目标服务宕机或端口未监听。 底层逻辑: Feign 在发送 HTTP 请求时,如果捕获到原生的 ,会自动将其包装为 并抛...