接上一章节Hystrix快速入门,这里讲讲Hystrix 的服务降级与异常处理

Hystrix 的服务降级

有了服务的熔断,随之就会有服务的降级,所谓服务降级,就是当某个服务熔断之后,服务端提供的服务将不再被调用,此时由客户端自己准备一个本地的fallback 回调,返回一个默认值来代表服务端的返回;这种做法,虽然不能得到正确的返回结果,但至少保证了服务的可用,比直接抛出错误或服务不可用要好很多,当然这需要根据具体的业务场景来选择;

5-2 SpringCloud快速开发入门:Hystrix 的服务降级与异常处理

Hystrix 的异常处理

我们在调用服务提供者时,我们自己也有可能会抛异常,默认情况下方法抛了异常会自动进行服务降级,交给服务降级中的方法去处理; 当我们自己发生异常后,只需要在服务降级方法中添加一个 Throwable 类型的参数就能够获取到抛出的异常的类型及信息,如下:

/**
     * 熔断的回调方法,也就是降级方法
     * @return
     */
    public String error(Throwable throwable) {
        System.out.println("异常 : " + throwable.getMessage());
        return "error";
    }

Hystrix 的异常处理取消

如果远程服务有一个异常抛出后我们不希望进入到服务降级方法中去处理,而是直接将异常抛给用户,那么我们可以在@HystrixCommand 注解中添加忽略异常,如下:

@HystrixCommand(fallbackMethod = "error", ignoreExceptions = Exception.class,commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "2500")}) //熔断器,调用不通,回调 error()方法    

5-2 SpringCloud快速开发入门:Hystrix 的服务降级与异常处理

5-2 SpringCloud快速开发入门:Hystrix 的服务降级与异常处理
5-2 SpringCloud快速开发入门:Hystrix 的服务降级与异常处理

发表回复