Spring Cloud Hystrix 断路器

Posted bennytitan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Hystrix 断路器相关的知识,希望对你有一定的参考价值。

 

 

 

 

1.继承feign和ribbon

2.ribbon服务修改内容

新增依赖pom.xml:

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

3.在启动类增加注解:@EnableHystrix

4.修改service类,增加断路返回:

    @Service
    public class HelloService {
        @Autowired
        RestTemplate restTemplate;

        @HystrixCommand(fallbackMethod = "hiError")
        public String hiService(String name) {
            return restTemplate.getForObject("http://eurekaclient/hi?name="+name,String.class);
        }

        public String hiError(String name) {
            return "hi,"+name+",sorry,error!";
        }
    }

5.测试,当对应的服务关闭时,访问对应服务返回如下:

技术分享图片

6.feign原本就继承了断路功能,需要在配置里打开:

application.yml新增下面内容:

feign:
  hystrix:
      enabled: true

7.在客户端服务接口上增加注解时,加上fallback参数即可

@FeignClient(value = "service-hi",fallback = SchedualServiceHiHystric.class)

8.然后写这个接口的一个实现类SchedualServiceHiHystric

 

package com.bennytitan.servicefeign;

import org.springframework.stereotype.Component;

@Component
public class SchedualServiceHiHystric implements SchedualServiceHi {
    @Override
    public String sayHiFromClientOne(String name) {
        return "sorry "+name;
    }
}

这样就完成了。

9.如果要加入Hystrix Dashboard来打开断路器仪表盘页面显示断路器工作情况。需要增加依赖:

        <!-- 断路器仪表盘 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>

10.在配置bean增加下面的bean配置:

    @Bean
    ServletRegistrationBean getServlet(){
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }

11.在服务启动类里添加注解:@EnableHystrixDashboard

12.测试访问:http://localhost:8764/hystrix

打开页面,输入红框内的内容后点击按钮技术分享图片

 

技术分享图片

完成。

以上是关于Spring Cloud Hystrix 断路器的主要内容,如果未能解决你的问题,请参考以下文章

企业级 SpringCloud+Spring Cloud 断路器(Hystrix)

断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天

Spring Cloud构建微服务架构 服务容错保护(Hystrix断路器)Dalston版

Spring Cloud(Dalston.SR5)--Hystrix 断路器

Spring Cloud断路器Hystrix

带有 Hystrix 断路器超时的 Spring Cloud Feign 客户端默认为 2 秒