我通过扩展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方法中执行的请求的响应将在稍后发生,并且由于我们尽快返回了回退响应而无法保持或返回暂停。
有什么方法可以回复那个回复吗?
提前致谢。