• 来一碟蛋炒粉吧!
    2019-05-30
    请问老师,我在做服务超时的测试,spring boot 版本为2.0.5.RELEASE spring cloud的版本为Finchley.SR1
    。我引入了spring-cloud-starter-netflix-hystrix的2.0.2.RELEASE版本以及 hystrix-javanica的1.5.12版本。在启动类上也加了@EnableCircuitBreaker,我在API模块通过feign向order模块发出请求,为了测试超时时间,我在order的方法里写上了Thread.sleep(2000);经过多次测试后我发现:
    1、请求方法上加上@HystrixCommand(fallbackMethod = "xxx",commandProperties={@HystrixProperty=(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")})
    配置文件上加上:ribbon.ReadTimeout = 5000 ribbon.ConnectTimeout = 5000
    结果:超时设置无效,请求发出1秒以后就会降级。
    2、请求方法上加上@HystrixCommand(fallbackMethod = "xxx",commandKey="hello")
    配置文件上加上:ribbon.ReadTimeout = 5000 ribbon.ConnectTimeout = 5000 hystrix.command.hello.execution.isolation.thread.timeoutInMilliseconds = 3000
    或者我干脆
    hystrix.command."类名#方法名()".execution.isolation.thread.timeoutInMilliseconds = 3000
    结果:超时设置无效,请求发出1秒以后就会降级。
    3、只在配置文件上加:hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000
    ribbon.ReadTimeout = 5000 ribbon.ConnectTimeout = 5000
    结果:超时设置成功,请求能保持到两秒多返回预期结果。

    所以问题就是我花了一天的时间用了各种方式去配置超时时间发现都是无效的,只有修改默认的超时时间是成功的。请问老师这会是什么原因呢?应该怎么解决?
    展开

    作者回复: 你是用的我们的例子在试的么?我们的例子里用了Feign,所以你在createOrder上设置execution.isolation.thread.timeoutInMilliseconds感觉没效果,你需要针对Feign设置超时。这也就是为什么你把默认的超时改长了就管用了。

    
     1
  • 五年
    2019-09-03
    我们这门课程是不是少了个网关模块呀

    作者回复: 的确是没有设计这个环节,因为Zuul2虽然有了,但Spring官方也不集成了,自己搞了Spring Cloud Gateway。但网关有点特殊,很多企业都会结合自己情况又去开发定制,或者选择Spring Cloud Gateway以外的东西,所以设计课程时,我思考了一下,就没纳入大纲。

    
    
  • 又双叒叕是一年啊
    2019-05-12
    Hystrixs 能做服务限流处理?如何做

    作者回复: 它主要是做熔断保护的,限流我们后面介绍的Resilience4j有比较方便的支持

    
    
  • sunözil
    2019-05-10
    老师 我想问一下docker-data文件夹在什么位置

    作者回复: docker-data是我自己的一个目录,我放在~/下面,你也可以换别的,不需要一定和我一样。

    
    
我们在线,来聊聊吧