resilience4j(四):核心模块CircuitBreaker源码之CircuitBreakerStateMachine

本文深入解析了Resilience4j的CircuitBreakerStateMachine,阐述了熔断器的核心流程,包括状态转换图和关键接口如isCallPermitted、onSuccess、onError。文章详细介绍了CLOSED、OPEN、HALF_OPEN之间的转换逻辑,并指出状态转换是通过AtomicReference保证线程安全。此外,还提及了熔断器如何根据业务异常来决定处理策略。
摘要由CSDN通过智能技术生成

CircuitBreakerStateMachine

熔断器有限状态器,熔断器核心接口CircuitBreaker的实现类。

先看一段CircuitBreaker 默认接口实现代码

    static <T> Supplier<T> decorateSupplier(CircuitBreaker circuitBreaker, Supplier<T> supplier){
        return () -> {
            //判断是否允许请求通过,不通过,抛出CircuitBreakerOpenException
            CircuitBreakerUtils.isCallPermitted(circuitBreaker);
            long start = System.nanoTime();
            try {
            	//反射执行业务代码,并返回结果
                T returnValue = supplier.get();
                long durationInNanos = System.nanoTime() - start;
                //请求处理成功,触发熔断器成功处理策略
                circuitBreaker.onSuccess(durationInNanos);
                return returnValue;
            } catch (Exception exception) {
                // Do not handle java.lang.Error
                long durationInNanos = System.nanoTime() - start;
                //请求出现异常,触发熔断器error处理策略
                circuitBreaker.onError(durationInNanos, exception);
                throw exception;
            }
        };
    }

CircuitBreaker装饰请求默认实现大同小异,熔断大体处理流程见下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值