使用springCloud构建微服务——Hystrix实现容错及打印日志

一、前期准备

先创建一个注册中心,一个消费者服务,一个生产者服务,由于之前写过,这里不多写了,请参考前面的博文。

使用springCloud构建微服务实战

二、本篇主题

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,从而提高系统的可用性和容错性。spring Cloud默认为Feign整合了Hystrix,在下面的操作中,不需要引入依赖了,前面已经引入过了Feign,在上篇的基础上接着操作。

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

重点:Feign已经为我们集成了Hystrix,经过查证,原来feign集成hystrix需要配置开启,如果不开启,会报错,不会去回退页面的。

在配置文件application.properties中添加:

(1)因为不知道feign集成hystrix需要配置开启,我花费了三四个小时找bug,一直不能在服务失败后,回退页面并打印日志。

feign.hystrix.enabled=true

1、创建一个Feign接口SchedualServiceHi,并添加@FeignClient注解

(1)注解中的name值是我们调用的其他应用名。该应用名中必须有该类中地址的映射,否则会调用出错。

(2)fallbackFactory的值是调用出错时会去调用的方法。

@FeignClient(name= "myprovider",fallbackFactory = FeignClientFallbackFactory.class)
public interface SchedualServiceHi {

    @RequestMapping("/index")
    String aa();

    @RequestMapping("/bb")
    public boolean mmm(@RequestParam("name") String name, @RequestParam("pwd") String pwd);
}

2、调用出错的类如下,消费者在调用提供者的方法出错时会返回调用这个类对应的方法,同时打印日志。

(1)该类需要实现FallbackFactory接口,并重写方法。

(2)接口的泛型为上面的Feign接口SchedualServiceHi。

(3)声明了打印日志的print属性,日志放在各个fallback方法中,不要直接放在create方法中。

(4)类上添加@component注解。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
public class FeignClientFallbackFactory implements FallbackFactory<SchedualServiceHi> {
//    打印日志
    private static final Logger print= LoggerFactory.getLogger(FeignClientFallbackFactory.class);


    @Override
    public SchedualServiceHi create(Throwable throwable) {
        return new SchedualServiceHi() {
            @Override
            public String mm() {
                print.info("fallback; reason was:",throwable);
                return "服务报错了";
            }

        };
    }
}

三、测试结果

1、将注册中心,生产者,消费者运行,请求消费者的mindex地址,此时能够正确跳转。

2、当把provider关闭后,再次访问,页面会返回服务报错了,同时会打印错误原因日志如下:

(1)意思:客户服务异常,加载没有可用的myprovider服务,为客户端。

四、总结

以上,我们使用Hystrix实现了微服务的容错,同时发生回退时,打印出来错误日志。更多精彩欢迎关注:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卧龙不言

欢迎关注java基础笔记公众号

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值