Hystrix run()方法即使在超时后也会执行

时间:2018-01-24 10:00:42

标签: hystrix

我通过扩展HystrixCommand创建了一个类,并使用下面的代码

为请求配置了超时
HystrixCommandProperties.Setter().withExecutionIsolationThreadTimeoutInMilliseconds(int milliSec);

当请求未在指定的超时时间内返回响应时,也会覆盖fallBack方法

@Override
protected JSONObject run() throws Exception
{
        // performed some http call
        final HttpEntity<String> httpEntity = new HttpEntity<>(httpHeaders);
        ResponseEntity<String> response = restTemplate.exchange(requestUrl, HttpMethod.GET, httpEntity, JSONObject.class)
                .getBody();

        System.out.println(response);
        return response;
}

@Override
protected JSONObject getFallback()
{
    final JSONObject json = new JSONObject();
    json.put("status", "900");
    json.put("message", "Request Failed");
    return json;
}

每当请求花费的时间超过预期的超时时间时,我会得到fallBack方法响应。

但是,我观察到的是,当发生超时时,会返回fallBack响应,并且在run方法中执行的请求的响应将在稍后发生,并且由于我们尽快返回了回退响应而无法保持或返回暂停。

有什么方法可以回复那个回复吗?

提前致谢。

0 个答案:

没有答案