我有一个封装 REST 调用的 hystrix 命令。如果发生故障(例如超时),我想进行一次重试并在仍然失败时返回适当的错误。
如我所见,Hystrix 不支持重试。使用 Hystrix 的唯一方法是将主要逻辑放入 getFallback() 方法中。但它看起来并不正确。
那么,用 hystrix 实现超时的正确方法是什么?
我有一个封装 REST 调用的 hystrix 命令。如果发生故障(例如超时),我想进行一次重试并在仍然失败时返回适当的错误。
如我所见,Hystrix 不支持重试。使用 Hystrix 的唯一方法是将主要逻辑放入 getFallback() 方法中。但它看起来并不正确。
那么,用 hystrix 实现超时的正确方法是什么?
Hystrix 本身并不关心它包裹了什么样的命令,也不支持重试的想法。该想法背后的示例:如果您的命令(包装 REST 请求)已参数化,则可能是某些资源端点应该重试,而另一些则不。有两个或多或少相同的命令或激活重试的技术参数都不是很好。此外,这会给项目增加一些额外的复杂性。
要解决这个问题并坚持使用 Hystrix,如果您正在开发 Spring 应用程序,您可能需要查看SpringRetry 。
另一种可能的解决方案是resilience4j,在这种情况下可以看作是Hystrix 和SpringRetry 的组合。
如果你使用feign进行 API 调用,它支持重试。只能在 fallback 方法中执行其他逻辑,将重试逻辑留给 feign。
可以参考这个链接:https ://medium.com/swlh/how-to-customize-feigns-retry-mechanism-b472202be331