如何重试 SocketTimeoutException?
作者: almson创建于 2025年10月9日更新于 2026年7月13日
标签bugquestion
这是一个修辞性的问题。Feign 硬编码了它认为可重试的异常,而 IOExceptions 永远不会重试。这实在是愚蠢,因为 I/O 异常是重试网络请求的主要原因!此外,IOExceptions 从来不会发送到 errorDecoder,而且几乎没有办法对它们进行重试。Feign 看起来很不错,但它的设计很糟糕。我不得不重写一半的类来解决各种主要的麻烦和疏忽。其他例子包括日志类将每个请求/响应分割成多个日志消息(忽略日志传输和存储的各种方式),Jackson 解码器尝试解码 byte[] 和 String(使其无法作为默认解码器使用),现在还有这个问题。顺便说一句,我通过自定义解码器来解决这个问题,该解码器捕获了 IOExceptions,但这可能不是一个完整的解决方案。
内容来源: OpenFeign/feign