zoukankan      html  css  js  c++  java
  • hystrix(4) 异常降级

      当执行HystrixCommand时,如果发生命令执行异常、熔断器熔断、信号量超过数量,就会执行降级fallback方法,并返回结果。本质上,当出现以上情况是,执行fallback方法,而不是run方法。

    private Observable<R> applyHystrixSemantics(final AbstractCommand<R> _cmd) {
            if (circuitBreaker.allowRequest()) {
    ...
                if (executionSemaphore.tryAcquire()) {
                    try {
    ...
                        return executeCommandAndObserve(_cmd)//执行run方法,如果异常,执行fallback方法
                                .doOnError(markExceptionThrown)
                                .doOnTerminate(singleSemaphoreRelease)
                                .doOnUnsubscribe(singleSemaphoreRelease);
                    } catch (RuntimeException e) {
                        return Observable.error(e);
                    }
                } else {
                    return handleSemaphoreRejectionViaFallback();//执行fallback方法,并返回响应Observable
                }
            } else {
                return handleShortCircuitViaFallback();//执行fallback方法,并返回响应Observable
            }
        }

      executeCommandAndObserve

     private Observable<R> executeCommandAndObserve(final AbstractCommand<R> _cmd) {
    ...
            Observable<R> execution;
            if (properties.executionTimeoutEnabled().get()) {
                execution = executeCommandWithSpecifiedIsolation(_cmd)//执行run方法。
                        .lift(new HystrixObservableTimeoutOperator<R>(_cmd));
            } else {
                execution = executeCommandWithSpecifiedIsolation(_cmd);
            }
            return execution.doOnNext(markEmits)
                    .doOnCompleted(markOnCompleted)
                    .onErrorResumeNext(handleFallback)//如果执行异常,则执行fallback方法。
                    .doOnEach(setRequestContext);
        }
  • 相关阅读:
    centos7安装jdk8
    centos7安装mysql5.7.31
    docker打包,运行springboot
    centos7安装docker
    ps学习记录
    Html的学习(二)
    tensorflow C++接口调用图像分类pb模型代码
    tensorflow C++接口调用目标检测pb模型代码
    ubuntu14 编译tensorflow C++ 接口
    Python opencv计算批量图片的BGR各自的均值
  • 原文地址:https://www.cnblogs.com/zhangwanhua/p/8241716.html
Copyright © 2011-2022 走看看