是否可以使用hystrix再次调用失败的请求?
can I use hystrix to call up a failed request again?
我有一个假客户端,每 60 秒向另一个微服务发送一个请求。在这个控制器上,我使用带有用户配置的 HystrixCommand 注释(只是试验)。我还有一个回退方法,当请求失败时我会进入该方法。
然而,预期的数据对我来说非常敏感,所以从回退方法发送空数据是没有意义的。
问题:如何将一个失败的请求以任意间隔再执行2-3次? Hystrix 有这个功能吗?
我有想法在回退方法中再次调用请求并将执行的请求数保存在某个地方,每次将它们与限制变量进行比较,但我不喜欢它。
@HystrixCommand(
threadPoolKey = "currencyThreadPool",
threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "30"),
@HystrixProperty(name = "maxQueueSize", value = "10")},
commandProperties = {
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "90"),
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "15000"),
@HystrixProperty(name = "metrics.rollingStats.numBuckets", value = "5")}
)
最后我使用了Spring重试库,完全满足了我的要求
@Retryable(value = {ConnectException.class, FeignException.class}, maxAttempts = 4,
backoff = @Backoff(delay = 5000, maxDelay = 80000, multiplier = 4))
我有一个假客户端,每 60 秒向另一个微服务发送一个请求。在这个控制器上,我使用带有用户配置的 HystrixCommand 注释(只是试验)。我还有一个回退方法,当请求失败时我会进入该方法。 然而,预期的数据对我来说非常敏感,所以从回退方法发送空数据是没有意义的。
问题:如何将一个失败的请求以任意间隔再执行2-3次? Hystrix 有这个功能吗?
我有想法在回退方法中再次调用请求并将执行的请求数保存在某个地方,每次将它们与限制变量进行比较,但我不喜欢它。
@HystrixCommand(
threadPoolKey = "currencyThreadPool",
threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "30"),
@HystrixProperty(name = "maxQueueSize", value = "10")},
commandProperties = {
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "90"),
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "15000"),
@HystrixProperty(name = "metrics.rollingStats.numBuckets", value = "5")}
)
最后我使用了Spring重试库,完全满足了我的要求
@Retryable(value = {ConnectException.class, FeignException.class}, maxAttempts = 4,
backoff = @Backoff(delay = 5000, maxDelay = 80000, multiplier = 4))