发生 HystrixTimeoutException 时请求不会中断
Request not interrupted when HystrixTimeoutException occured
我在eureka注册了一个简单的Eureka Server、Config Server、Zuul Gateway和一个测试服务(下面命名为aService)。
此外,注册了 FallbackProvider 的实现,默认命令的 timeoutInMilliseconds 为 10000。
我向 aService 发送了一个请求,其中将休眠 15 秒并每 second.After 10 秒打印一次 HystrixTimeoutException 并访问我的自定义 fallbackResponse,但滴答仍然持续到 15 秒结束。
我的问题显然是,为什么请求没有中断?有人可以解释一下 hystrix 和 zuul 在 HystrixTimeout 之后做了什么吗?
依赖版本:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons-dependencies</artifactId>
<version>Edgware.SR2</version>
</dependency>
<dependency>
<groupId>com.netflix.zuul</groupId>
<artifactId>zuul-core</artifactId>
<version>1.3.0</version>
</dependency>
我的一些 hystrix 配置:
zuul.servletPath=/
hystrix.command.default.execution.isolation.strategy=THREAD
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
hystrix.command.aService.execution.isolation.strategy=THREAD
ribbon.ReadTimeout=60000
ribbon.ConnectTimeout=3000
我的一些 FallbackProvider:
@Component
public class ServerFallback implements FallbackProvider {
@Override
public String getRoute() {
return "*";
}
@Override
public ClientHttpResponse fallbackResponse() {
// some logs
return simpleClientHttpResponse();
}
@Override
public ClientHttpResponse fallbackResponse(Throwable cause) {
// some logs
return simpleClientHttpResponse();
}
}
``
zuul与ribbon一起使用时(默认),HytrixCommandProperties中的executionIsolationStrategy会被AbstractRibbonCommand覆盖,也就是SEMAPHORE被default.In这种隔离策略覆盖,请求不会中断immediatelly.See
我在eureka注册了一个简单的Eureka Server、Config Server、Zuul Gateway和一个测试服务(下面命名为aService)。 此外,注册了 FallbackProvider 的实现,默认命令的 timeoutInMilliseconds 为 10000。
我向 aService 发送了一个请求,其中将休眠 15 秒并每 second.After 10 秒打印一次 HystrixTimeoutException 并访问我的自定义 fallbackResponse,但滴答仍然持续到 15 秒结束。
我的问题显然是,为什么请求没有中断?有人可以解释一下 hystrix 和 zuul 在 HystrixTimeout 之后做了什么吗?
依赖版本:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons-dependencies</artifactId>
<version>Edgware.SR2</version>
</dependency>
<dependency>
<groupId>com.netflix.zuul</groupId>
<artifactId>zuul-core</artifactId>
<version>1.3.0</version>
</dependency>
我的一些 hystrix 配置:
zuul.servletPath=/
hystrix.command.default.execution.isolation.strategy=THREAD
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
hystrix.command.aService.execution.isolation.strategy=THREAD
ribbon.ReadTimeout=60000
ribbon.ConnectTimeout=3000
我的一些 FallbackProvider:
@Component
public class ServerFallback implements FallbackProvider {
@Override
public String getRoute() {
return "*";
}
@Override
public ClientHttpResponse fallbackResponse() {
// some logs
return simpleClientHttpResponse();
}
@Override
public ClientHttpResponse fallbackResponse(Throwable cause) {
// some logs
return simpleClientHttpResponse();
}
}
``
zuul与ribbon一起使用时(默认),HytrixCommandProperties中的executionIsolationStrategy会被AbstractRibbonCommand覆盖,也就是SEMAPHORE被default.In这种隔离策略覆盖,请求不会中断immediatelly.See