原创

Hystrix调用时间超时解决办法

温馨提示:
本文最后更新于 2018年06月30日,已超过 2,337 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

调用超时问题浮现

分析问题

可能有人会想,feign中是有Hystrix的,是否可以设置feign中的Hystrix的超时时间?

feign:
  hystrix:
    # 开启feign支持hystrix  (注意,一定要开启,旧版本默认支持,新版本默认关闭)
    enabled: true
    # feign中的Hystrix的客户端调用超时时间
    client:
      config:
        default:
          connectTimeout: 4000
          readTimeout: 4000

设置了之后并没有任何作用!

解决办法

来看看Hystrix的HystrixCommandProperties源码:

this.executionTimeoutInMilliseconds = getProperty(propertyPrefix, key, "execution.isolation.thread.timeoutInMilliseconds", builder.getExecutionIsolationThreadTimeoutInMilliseconds(), default_executionTimeoutInMilliseconds);
this.executionTimeoutEnabled = getProperty(propertyPrefix, key, "execution.timeout.enabled", builder.getExecutionTimeoutEnabled(), default_executionTimeoutEnabled);

execution.isolation.thread.timeoutInMilliseconds:Hystrix的默认超时时间,默认是1秒。

execution.timeout.enabled:Hystrix超时时间默认是开启的(true)。

private static final Integer default_executionTimeoutInMilliseconds = 1000; // default => executionTimeoutInMilliseconds: 1000 = 1 second
private static final Boolean default_executionTimeoutEnabled = true;
本文目录