【问题标题】:How to retry with hystrix如何使用 hystrix 重试
【发布时间】:2018-04-01 13:20:51
【问题描述】:

我有一个封装了 REST 调用的 hystrix 命令。如果失败(例如超时),我想进行一次重试,如果仍然失败,则返回适当的错误。

如我所见,Hystrix 不支持重试。使用 Hystrix 的唯一方法是将主要逻辑放入 getFallback() 方法中。但它看起来并不正确。

那么,用 hystrix 实现超时的正确方法是什么?

【问题讨论】:

    标签: java hystrix retry-logic


    【解决方案1】:

    Hystrix 本身并不关心它包裹了什么样的命令,也不支持重试的想法。 想法背后的示例:如果您的命令(包装 REST 请求)已参数化,则可能是某些资源端点应该重试,而另一些则不。有两个或多或少相同的命令或激活重试的技术参数都不是很好。 此外,这会给项目增加一些额外的复杂性。

    要解决这个问题并坚持使用 Hystrix,如果您正在开发 Spring 应用程序,您可能需要查看 SpringRetry

    另一个可能的解决方案是resilience4j,在这种情况下可以看作是 Hystrix 和 SpringRetry 的组合。

    【讨论】:

      【解决方案2】:

      如果您使用 feign 进行 API 调用,它支持重试。只能在fallback方法中执行其他逻辑,重试逻辑留给feign。

      您可以参考这个链接:https://medium.com/swlh/how-to-customize-feigns-retry-mechanism-b472202be331

      【讨论】:

      • 请在在您的帖子中包含与您的答案相关的所有信息。外部链接应仅提供附加信息。现在,如果链接由于某种原因断开,您的答案将变得完全无用。我推荐taking the tour 以及阅读how to write a good answer
      猜你喜欢
      • 2020-08-14
      • 2021-01-05
      • 2016-01-18
      • 2019-06-03
      • 2017-03-25
      • 2015-10-01
      • 2019-05-08
      • 2015-08-09
      • 2016-09-13
      相关资源
      最近更新 更多