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