继续呼叫第三方,直到它返回 Hystrix 的预期响应



我正在寻找一种从我的代码(Spring Boot 应用程序(调用第三方服务的方法,如果它没有响应,我想重复调用 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 解决这个问题吗?

...我想重复通话 x 次,然后提供 默认回退。

配置circuitBreaker.requestVolumeThreshold可能会有所帮助。看看其他Hystrix属性。

@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 秒。

春天还有@Retryable注释。

最新更新