当前位置:   article > 正文

SpringBoot熔断_springboot 熔断

springboot 熔断

最近用到SpringBoot熔断机制,详细的demo如下,本人也是第一次写,具体原理性的东西也不是太懂,这里就简单的介绍一下它的使用方法以及注意事项,希望各位能一次性测试成功。

demo代码如下

  1. package com.example.demo;
  2. import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
  3. import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RequestParam;
  6. import org.springframework.web.bind.annotation.RestController;
  7. /**
  8. * Created by Lenovo on 2019/5/16.
  9. */
  10. // @RestController注解相当于@ResponseBody + @Controller合在一起的作用。
  11. @RestController
  12. public class HysController {
  13. /* @HystrixCommand(fallbackMethod="helloFallbackMethod",commandProperties =
  14. {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds" , value = "10000")})*/
  15. @HystrixCommand(fallbackMethod="helloFallbackMethod")
  16. @GetMapping("/tt")
  17. public String tt(@RequestParam(name = "num") int num) throws InterruptedException {
  18. Thread.sleep(5000);
  19. int a = 15 / num;
  20. return "ok";
  21. }
  22. private String helloFallbackMethod(@RequestParam(name = "num") int num){
  23. return "fall back";
  24. }
  25. }

首先在启动类添加注解@EnableHystrix表示加入熔断机制

在Controller层的具体的方法路由上添加@HystrixCommand(fallbackMethod="helloFallbackMethod")表示该方法在出错或者是超时时会跳转到helloFallbackMethod。例如在代码中如果num=0,这时就会抛异常,熔断就会跳转到helloFallbackMethod;springboot的默认的超时时间是1000ms,代码中sleep(5000)也会导致熔断并跳转到helloFallbackMethod;默认多少时间算超时可以通过在application.yml文件中进行配置,如下hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000;这里添加到application.yml中就可以了,表示3000ms超时。

然后实现helloFallbackMethod方法,这里helloFallbackMethod的参数必须与路由方法的参数一致,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/741011
推荐阅读
相关标签
  

闽ICP备14008679号