2017-10-20 251 views
1

我有一个封装了REST调用的hystrix命令。如果发生故障(例如,超时),我想重新尝试一次,并在发生故障时返回适当的错误。用hystrix处理重试的正确方法

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

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

回答

2

Hystrix本身并不在乎它包装了什么样的命令,它不支持重试的想法。 这个想法背后的例子:如果你的命令(包装一个REST请求)被参数化了,它可能是一些资源端点应该被重试,而另一些资源端点则不应该被重试。使两个或多或少执行相同操作的命令以及激活重试的技术参数都不会很好。 此外,这会给项目增加一些额外的复杂性。

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

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