SpringCloud--熔断简单实现

要在上篇<SpringCloud–hystrix服务降级简单实现>博客基础上 去完成熔断

不用引入的新的JAR的依赖

@Controller
public class HystrixController {

    @Qualifier("restTemplate1")
    @Autowired
    RestTemplate restTemplate1;

        @RequestMapping("/hystrix")
        @ResponseBody
        @HystrixCommand(commandProperties = {
                @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "10"),
                @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),
                @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60")
        } ,fallbackMethod = "errorNystrix")
        String hystrix(Integer id) {
            if(id==2){
                throw new RuntimeException("出现异常");
            }
            return "执行完成" ;
        }

        String errorNystrix(Integer id) {
            return "hystrix熔断,超时了执行此方法";
        }
}

直接编写

circuitBreaker.requestVolumeThreshold:用来设置在滚动时间窗中,断路器熔断的最小请求数。例如,默认该值为20的时候,如果滚动时间窗(默认10秒)内仅收到19个请求,即使这19个请求都失败了,断路器也不会打开。
circuitBreaker.sleepWindowInMilliseconds:用来设置当断路器打开之后的休眠时间窗。休眠时间窗结束之后,会将断路器设置为“半开”状态,尝试熔断的请求命令,如果依然时候就将断路器继续设置为“打开”状态,如果成功,就设置为“关闭”状态。
circuitBreaker.errorThresholdPercentage:该属性用来设置断路器打开的错误百分比条件。默认值为50,表示在滚动时间窗中,在请求值超过requestVolumeThreshold阈值的前提下,如果错误请求数百分比超过50,就把断路器设置为“打开”状态,否则就设置为“关闭”状态。

效果:
开始能正常访问
在这里插入图片描述

多次访问服务降级后
在这里插入图片描述

在执行原有方法
在这里插入图片描述
已经熔断了

等待一段时间后有可以正常访问了


版权声明:本文为happyming886原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。