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

使用springCloud构建微服务——Hystrix实现容错及打印日志 一、前期准备先创建一个注册中心一个消费者服务一个生产者服务由于之前写过这里不多写了请参考前面的博文。使用springCloud构建微服务实战二、本篇主题Hystrix是由Netflix开源的一个延迟和容错库用于隔离访问远程系统服务或者第三方库防止级联失败从而提高系统的可用性和容错性。spring Cloud默认为Feign整合了Hystrix在下面的操作中不需要引入依赖了前面已经引入过了Feign在上篇的基础上接着操作。代码语言javascriptAI代码解释dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId /dependency重点Feign已经为我们集成了Hystrix,经过查证,原来feign集成hystrix需要配置开启如果不开启会报错不会去回退页面的。1、在配置文件application.properties中添加1因为不知道feign集成hystrix需要配置开启我花费了三四个小时找bug一直不能在服务失败后回退页面并打印日志。代码语言javascriptAI代码解释feign.hystrix.enabledtrue2、创建一个Feign接口SchedualServiceHi并添加FeignClient注解1注解中的name值是我们调用的其他应用名。该应用名中必须有该类中地址的映射否则会调用出错。2fallbackFactory的值是调用出错时会去调用的方法。代码语言javascriptAI代码解释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); }3、调用出错的类如下消费者在调用提供者的方法出错时会返回调用这个类对应的方法,同时打印日志。1该类需要实现FallbackFactory接口并重写方法。2接口的泛型为上面的Feign接口SchedualServiceHi。3声明了打印日志的print属性日志放在各个fallback方法中不要直接放在create方法中。4类上添加component注解。代码语言javascriptAI代码解释import org.slf4j.Logger; import org.slf4j.LoggerFactory; Component public class FeignClientFallbackFactory implements FallbackFactorySchedualServiceHi { // 打印日志 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实现了微服务的容错同时发生回退时打印出来错误日志