zoukankan      html  css  js  c++  java
  • Greenwich.SR2版本的Spring Cloud Hystrix实例

      之前我们在eureka(参见Greenwich.SR2版本的Spring Cloud Eureka实例)中,服务消费方a-beautiful-client调用服务提供方a-bootiful-client,如果这时提供方挂掉或者请求超时的话,如何实现服务降级呢?spring cloud给我们提供了Hystrix这个断路器,通过注解能很方便的实现。我们还是拿a-beautiful-client举例,老套路,三板斧亮出:

      1、pom里新增Hystrix的jar包引入:

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            </dependency>

      2、主类添加@EnableCircuitBreaker注解开启熔断;

      3、实现类ConusmerServiceImpl添加注解启用熔断并指定降级方法@HystrixCommand(fallbackMethod = "backupCall"):

        @Override
        @HystrixCommand(fallbackMethod = "backupCall")
        public String call(String name) {
            ResponseEntity resultResponseEntity = restTemplate.postForEntity(appServiceUrl + "hello?name=" + name, null, String.class);
            if (resultResponseEntity != null && resultResponseEntity.getBody() != null) {
                return name + " says: " + resultResponseEntity.getBody().toString();
            }
            return null;
        }
    
        public String backupCall(String name) {
            return "Hi, I'm Hystix.";
        }

      打完收工。注意熔断方法backupCall的参数、返回类型需要跟原来的call方法保持一致。我们把服务提供方a-bootiful-client的全部或部分服务停掉,再通过http://localhost:8763/sayHello?name=world请求,会发现返回的是服务降级方法backupCall里的东西了:

       我们上面是通过服务降级方法来实现的熔断,其实也可以通过服务降级类来做,详见Greenwich.SR2版本的Spring Cloud Feign实例

  • 相关阅读:
    空值判断(is not null)
    http协议相关面试题
    Linux基本面试题。(感觉也就这几个了)
    1、了解django运行流程
    python笔试常见题
    selenium中一些可能用到的js操作
    元素判断
    二次封装
    关于在阿里云上面安装mysql遇到的一些问题。
    linux常用的一些基本命令
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/11217609.html
Copyright © 2011-2022 走看看