Spring Cloud(2020.0.3) | 从入门到入土 - 14. Hystrix 配置超时时间

上一篇我们在使用 Hystrix 的时候就有提到,Hystrix 的超时时间是 1 秒。但是有的时候 1 秒太短了,这里我们来说一下如何去配置 Hystrix 的超时时间。

一、全局配置超时时间

商品模块

yml

hystrix: 
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000

这个是配置 hystrix 全局配置超时时间,这里配置的是 3000 毫秒,也就是 3 秒。

业务代码

业务代码我们只修改线程休眠时间,这里我们让线程休眠 3.1 秒

二、测试

 

 

可以看到,响应时间 6 秒,并且服务被熔断。

三、修改商品模块

我们将线程休眠 3.1 秒,改成 2秒,再来重新启动服务试试看。

可以看到,响应时间为 4.54 秒,再来看日志

同样是正常提供服务,最后看看数据库

完美~~~

四、单独配置超时响应时间

方式一

我们可以通过在 @HystrixCommand 增加一个配置

@HystrixCommand(
		fallbackMethod = "getCommodityPriceFallback",
		commandProperties = {
				@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000")
		}
	)

通过 @HystrixProperty 设置 key、value 。key 是超时时间的字段,value 是具体的值。重新启动服务,再来试试。

可以看到,虽然全局配置的 3000 毫秒,但是这里是单独配置的,它会优先单独配置,在没有单独配置的时候才会去找全局配置。

方式二

上面的方法有一个问题,如果说我们现在有很多需要配置成 1 秒的方法,那么按照上面的方式去配置也不是很好的。

我们可以将配置抽离出来,通过 commandKey 引入到服务熔断中,再来看

yml

yml 中我们增加一段配置

hystrix: 
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000
    userGetKey:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 1000

这样配置之后,相当于我们有了两种超时机制,一种是 default,一种是 userGetKey。

业务代码

我们在业务代码中使用 commandKey 进行引入 yml 中的配置。

自己重新启动服务,测试一下吧。


这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com

最近网站已经做好,并且已经上线,欢迎各位留言~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值