继续调用第 3 方,直到它返回 Hystrix 的预期响应
Posted
技术标签:
【中文标题】继续调用第 3 方,直到它返回 Hystrix 的预期响应【英文标题】:Keep calling 3rd party until it returns expected response with Hystrix 【发布时间】:2020-04-30 09:17:14 【问题描述】:我正在寻找一种从我的代码(Spring Boot 应用程序)调用 3rd 方服务的方法,如果它没有响应,我想重复调用 x 次,然后提供默认的回退。我发现了一个示例伪代码,它可能适用于我的 Hystrix
public class ExampleClass
@HystrixCommand(fallbackMethod = "example_Fallback")
public String myMethod()
// third party service
String response = httpClient.execute();
return "OK";
private String example_Fallback()
return "ERROR HAPPENED";
但是,如果它返回意外的正常响应,我还想重复调用相同的第三方服务 x 次。(将该特定响应视为第三方无响应)。这样做的原因是,第三方可能无法为请求提供服务,我只能在响应中进行检查。有人可以指出我正确的方向或提供一个如何使用 Hystrix 解决此问题的示例吗?
【问题讨论】:
【参考方案1】:...我想重复调用 x 次,然后提供 默认后备。
在这里配置circuitBreaker.requestVolumeThreshold
可能会有所帮助。也可以看看其他Hystrix properties。
@HystrixCommand(fallbackMethod = "example_Fallback", commandProperties =
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "5"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "2000")
)
public String myMethod()
...
请注意circuitBreaker.requestVolumeThreshold
(引用)“...设置滚动窗口中将使电路跳闸的最小请求数”。滚动窗口持续时间 - metrics.rollingStats.timeInMilliseconds
- 默认为 10 秒。
Spring中还有@Retryable
注解。
【讨论】:
以上是关于继续调用第 3 方,直到它返回 Hystrix 的预期响应的主要内容,如果未能解决你的问题,请参考以下文章