Hystrix降级

10 篇文章 1 订阅
2 篇文章 0 订阅

要使用@HystrixCommand注解来开启降级服务,需要引入

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

feign的熔断服务是不需要这个依赖的,因为feign已经有Hystrix的依赖了,只是没有@HystrixCommand,
所以要使用@HystrixCommand 需要单独引入hystrix依赖。

   @GetMapping("/server")
    @HystrixCommand(fallbackMethod = "serverFallBack")
    public String server(){
        String test = feignClient1.test();
        if (test.equals("熔断了")){
            throw new RuntimeException();
        }
        return  test;
    }

使用注解,并且指定回调方法:
@HystrixCommand(fallbackMethod = “serverFallBack”)

具体方法如下:

**---------------fallback------------*/
public String serverFallBack(){

    //降级的话进行警报,发送短信给维护人员
    //使用redis,防止短时间按内多次重复发送。
    String s = redisTemplate.opsForValue().get(alarm);
    //短信比较耗时,可以单独start一个线程进行发送,当然也可以使用消息队列。
   new Thread( ()->{
       if (s==null||s.equals("")){
           System.out.println("服务出了问题,快来解决");
           redisTemplate.opsForValue().set(alarm,"发送了短信",120,TimeUnit.SECONDS);
       }else {
           System.out.println("已经发送过");
       }
   }).start();

    return  "降级了";
}

如果test2方法中检测到异常,就会降级处理,进入fallback,进行返回。这也可以直接放在controller层上,这样就不会直接返回异常给客户了。

而且在fallback中可以设置进入回调函数,就会出发短信发送,实现服务异常报警机制。但是最好对短信发送进行缓存,防止连续发送短信,比如发送过一次,就在redis中存入个数据,设置过期时间,每次打算发信,都去reids检查一下,有对应数据,就不发送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值