zoukankan      html  css  js  c++  java
  • 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

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

    完成。

  • 相关阅读:
    PTA考试几点注意事项
    网易云信在融合通信场景下的探索和实践之 SIPGateway 服务架构
    破旧立新,精准测试之道
    从 0 到 1 构建实时音视频引擎
    云信小课堂|如何实现音视频通话
    Python 回调函数实现异步处理
    数据结构--链表--约瑟夫问题
    Python 轻松实现ORM
    leetcode 递归编程技巧-链表算法题
    Tornado 初识
  • 原文地址:https://www.cnblogs.com/BennyTitan/p/9198418.html
Copyright © 2011-2022 走看看