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

打开页面,输入红框内的内容后点击按钮

 

完成。

posted @ 2018-06-19 14:29  鸭脖子  阅读(128)  评论(0编辑  收藏  举报