美文网首页
springcloud使用(四) 熔断器Hystrix

springcloud使用(四) 熔断器Hystrix

作者: 朝生夕丧 | 来源:发表于2018-11-29 20:12 被阅读6次

熔断器的概念和优点参考 springcloud(四):熔断器Hystrix, 讲的很详细

基于feign的Hystrix

在前面的feign的消费者的项目上面改改就ok

  1. application.properties中添加 feign.hystrix.enabled=true, 开启服务熔断
  2. 编写helloService接口的实现类HelloServiceFallBack
@Service
public class HelloServiceFallBack implements HelloService {
    @Override
    public String hello(Map<String, String> map) {
        // 可以进行一些错误记录, 将未完成的业务可能人工干预处理
        return ">>>>>>>>>>>>>调用服务失败, 参数:"+map.toString();
    }
}
  1. 在helloService的注解FeignClient中添加fallback = HelloServiceFallBack.class, 表示调用服务异常后回调执行HelloServiceFallBack的业务
    @FeignClient(value ="spring-cloud-eureka-producer",fallback = HelloServiceFallBack.class)
  2. 服务生产者的代码中抛一个异常
@RestController
public class ApiHello {
    /*@Autowired
    private LoadBalancerClient loadBalancerClient;*/

    @RequestMapping(value = "/hello")
    public String sayHello(HttpServletRequest request) throws IllegalAccessException {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        if(age.equals("23")){
            throw new IllegalAccessException("我出错了xox");
        }
        System.out.println("我是9000");
        return JSON.toJSONString("hello,"+name);
    }
}
  1. 启动消费者和服务者, 请求参数中加入age参数, 发现age=23的时候, 消费者回调了HelloServiceFallBack的业务
基于Ribbon的Hystrix

在ribbon的consumer上修改

  1. 新增依赖spring-cloud-starter-netflix-hystrix
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
  1. 启动类上添加注解 @EnableHystrix
  2. controller中加入fallback
@RequestMapping(value = "/consumer/hello")
    @HystrixCommand(fallbackMethod = "fallBackre")
    public String hello(HttpServletRequest request) throws JsonProcessingException {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        MultiValueMap<String, String> map= new LinkedMultiValueMap<>();
        map.add("name",name);
        map.add("age",age);
        return this.restTemplate.postForObject("http://spring-cloud-eureka-producer/hello",map,String.class);
    }

    /**
     * 服务异常回调方法
     * @return
     */
    public String fallBackre(HttpServletRequest request){
        String name = request.getParameter("name");
        return ">>>>>>>>>>>>>调用服务失败, 参数:"+name;
    }

这是方法级别的回调, 注意方法参数值

  1. 完毕, 启动服务者个消费者, 当age=23时, 调用fallBackre方法
    over

相关文章

  • springcloud使用(四) 熔断器Hystrix

    熔断器的概念和优点参考 springcloud(四):熔断器Hystrix, 讲的很详细 基于feign的Hyst...

  • SpringCloud 之Hystrix熔断器

    熔断器Hystrix 为什么要使用熔断器 什么是Hystrix Hystrix 中文意思就是豪猪 ,因其背上长满...

  • springcloud(四):熔断器Hystrix

    说起springcloud熔断让我想起了去年股市中的熔断,多次痛的领悟,随意实施的熔断对整个系统的影响是灾难性的,...

  • [SpringCloud] Hystrix 简单使用

    [SpringCloud] Hystrix 简单使用 前提说明 因为 SpirngBoot,SpringCloud...

  • springcloud熔断器Hystrix

    熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的...

  • springcloud熔断器Hystrix

    为什么有Hystrix 在微服务架构中,业务别拆分成很多个服务,服务之间可以相互调用,服务并不能保证100%可用,...

  • SpringCloud之熔断器Hystrix

    前言 SpringCloud 是微服务中的翘楚,最佳的落地方案。 在微服务架构中多层服务之间会相互调用,如果其...

  • SpringCloud之熔断器Hystrix

    前言 SpringCloud 是微服务中的翘楚,最佳的落地方案。 在微服务架构中多层服务之间会相互调用,如果其...

  • SpringCloud-hystrix熔断器

    一、maven配置 二、application.yml配置 三、启动类 四、服务调用 五、控制器调用服务

  • Springcloud-熔断器Hystrix

    雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这...

网友评论

      本文标题:springcloud使用(四) 熔断器Hystrix

      本文链接:https://www.haomeiwen.com/subject/fdfqcqtx.html