Hystrix

Hystrix

熔断器

使用到的依赖

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

主启动类添加注解

@EnableHystrix

现在只是启动了 Hystrix ,真正使用

方法级别的注解,@HystrixCommand注解,指明熔断处理类 fallbackMethod 参数要一致:

@GetMapping("/find/{id}")
    // 一旦调用服务方法失败并抛出错误信息后,会自动调用 @HystrixCommand 标注的 fallbackMethod 指定的方法
    @HystrixCommand(fallbackMethod = "processHystrix_Get")
    public Dept get(@PathVariable("id") Long id) {
        Dept dept =  deptService.findById(id);
        if (null == dept) {
            throw new RuntimeException("该ID: " + id + " 没有对应的信息");
        }

        return dept;
    }


    public Dept processHystrix_Get(@PathVariable("id") Long id) {
        return new Dept().setDeptno(id).
                setDname("该ID: " + id + " 没有对应的信息, null -- @HystrixCommand").
                setDb_source("no this database in MySQL");
    }

Feign 中集成了 Hystrix 可以使用类级别的熔断处理,Feign 中集成了 Hystrix 指定服务降级的 key 是 fallbackFactory

@FeignClient(value = "MICROSERVICECLOUD", fallbackFactory = DeptClientServiceFallback.class)
public interface DeptClientService {

    @PostMapping("/dept/add")
    public boolean add(@RequestBody Dept dept) ;

    @GetMapping("/dept/find/{id}")
    public Dept get(@PathVariable("id") Long id) ;

    @GetMapping("/dept/list")
    public List<Dept> list() ;
}

熔断类,实现_FallbackFactory_接口

@Component
public class DeptClientServiceFallback implements FallbackFactory<DeptClientService> {
    @Override
    public DeptClientService create(Throwable throwable) {
        return new DeptClientService() {
            @Override
            public boolean add(Dept dept) {
                return false;
            }

            @Override
            public Dept get(Long id) {
                return new Dept().setDeptno(id).
                        setDname("该ID: " + id + " 没有对应的信息, FallbackFactory<DeptClientService>").
                        setDb_source("no this database in MySQL");
            }

            @Override
            public List<Dept> list() {
                return null;
            }
        };
    }
}

服务监控 HystrixDashboard

添加的依赖

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

主启动类的注解

@EnableHystrixDashboard

被监控的类需要添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

配置很简单,只要是使用了 Hystrix 的都可以被监控,主要是查看监控信息

注意点:

1. Finchley.RC1 版本的 Spring Cloud 的访问路径类似:http://localhost:8001/actuator/hystrix.stream
需要在端口和 hystrix.stream 中间添加 actuator

2. springcloud 的Finchley.RC1 版本中监默认是关闭的,需要在配置中打开
#暴露全部的监控信息
management:
 endpoints:
  web:
   exposure:
    include: "*"
        
3. 在 spring cloud  Finchley.RC1 版本中使用 Hystrix ,需要添加 @EnableHystrix 

4.解决无法引如 hystrixdashboard 的问题
先加入如下依赖:
    <dependency> 
            <groupId>com.netflix.hystrix</groupId>
            <artifactId>hystrix-javanica</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-hystrix-dashboard</artifactId>
        </dependency>
上面两个依赖配合才引入了dashboard,完成后可以删除上面的改为下面的依赖
       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值