我有一个封装REST调用的hystrix命令。在失败的情况下(例如,超时),我想进行一次重试,如果失败,则返回相应的错误。
正如我所看到的,Hystrix不支持重试。使用Hystrix的唯一方法是将主逻辑放入getFallback()方法中。但它看起来并不正确。
那么,用hystrix实现超时的合适方式是什么呢?
发布于 2017-10-20 20:00:23
Hystrix本身并不关心它包装了什么类型的命令,它也不支持重试的想法。这个想法背后的例子:如果您的命令(包装REST请求)是参数化的,那么可能是一些资源端点应该重试,而其他资源端点不应该重试。如果有两个或多或少相同的命令,也没有一个技术参数来激活重试,这将是不好的。此外,这会给项目增加一些额外的复杂性。
要绕过这个问题并坚持使用Hystrix,如果您正在使用SpringRetry应用程序,那么您可能想要了解一下Spring。
另一种可能的解决方案是resilience4j,在这种情况下,它可以被视为Hystrix和SpringRetry的组合。
发布于 2021-06-28 17:49:35
如果您使用伪装进行API调用,它支持重试。您只能在fallback方法中执行其他逻辑,并将重试逻辑保留为feign。
你可以访问这个链接:https://medium.com/swlh/how-to-customize-feigns-retry-mechanism-b472202be331
https://stackoverflow.com/questions/46847930
复制相似问题