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

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

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

最佳答案

Hystrix本身并不关心用哪种命令包装它,也不支持重试的想法。
想法背后的示例:如果对您的命令(包装REST请求)进行了参数设置,则可能是某些资源端点应重试,而其他资源端点则不应重试。具有两个或多或少执行相同操作的命令或一个技术参数来激活重试将不会很好。
另外,这将为项目增加一些额外的复杂性。

要解决此问题并坚持使用Hystrix,如果您正在使用Spring应用程序,则可能需要研究SpringRetry

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

关于java - 如何使用Hystrix重试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46847930/

10-13 03:05