栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号