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