Hystrix服务熔断
Payment8001里试验:
@Service public class HystrixPaymentService { /** * *模拟服务熔断 * 这里的意思是: 在10秒的时间窗口期内,请求次数超过十次,失败率达到30%,就打开服务熔断 */ @HystrixCommand(fallbackMethod = "circuitBreakerCallbackMethod", commandProperties = { @HystrixProperty(name="circuitBreaker.enabled",value="true"), // 打开服务熔断 @HystrixProperty(name="circuitBreaker.requestVolumeThreshold",value="10"), //请求次数 @HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds",value="10000"), //时间窗口期 @HystrixProperty(name="circuitBreaker.errorThresholdPercentage",value="30") // 失败达到多少后跳闸 }) public String paymentCircuitBreaker(@PathVariable("id") Integer id) { if(id < 0) { throw new RuntimeException("id不能为负数"); } String serialNumber = UUID.randomUUID().toString(); return Thread.currentThread().getName() + "调用成功,流水号为: " + serialNumber; } public String circuitBreakerCallbackMethod(@PathVariable("id") Integer id) { return "id不能为负数,启动了服务熔断..." + id; } }
controller:
@RestController @Slf4j public class HystrixPaymentController { @Resource HystrixPaymentService service; @GetMapping("/payment/circuit/{id}") public String paymentCircuitBreaker(@PathVariable("id") Integer id) { return service.paymentCircuitBreaker(id); } }
测试:
这里不停的调用:
http://localhost:8001/payment/circuit/-12 之后再调用http://localhost:8001/payment/circuit/1 出现服务降级。
过一段时间才恢复(一般五秒)
遗留的问题:
为什么设置了也还是使用默认值。