SpirngCloud项目实战-----05(Hystrix调用)
文章目录
前言
本篇文章将介绍当服务之间调用失败的时候如何进行容错处理,此外博主说下当前最新的Spring-cloud不支持自动带出Hystrix的版本,加了依赖也不好用。使用 此版本的可以正常支持熔断。具体原因没深究。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>spring_cloud_consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring_cloud_consumer</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
一、如何添加Hystrix?
1.1 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
1.2 添加启动注解@EnableCircuitBreaker
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
public class LwBlogConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(LwBlogConsumerApplication.class, args);
}
}
1.3 开启Hystrix的启用注解
feign.hystrix.enabled=true
二 如何使用Hystrix
2.1、创建一个类继承Feign调用的接口
使用Hystrix其实就是当我们调用其他服务时无法调用时,使用备用方案去解决读取不到数据的问题,从而保证服务的可用性,而不至于抱歉,导致系统超时。在微服务中可能存在长链路的调用因此熔断处理是非常重要的方案。
@Component
public class HelloRemoteHystrix implements HelloRemote {
@Override
public String hello(String name) {
return "此处是回调函数";
}
}
2.2、添加回调函数
@FeignClient(name= "lw-blog-admin",fallback = HelloRemoteHystrix.class)
public interface HelloRemote {
@RequestMapping(value = "/hello")
public String hello(@RequestParam(value = "name") String name);
}
三 测试
断掉远程的Admin服务,触发熔断
总结
熔断以后可以使用缓存中的数据,也可以什么都不返回。就是为了处理获取不到对应服务的数据时做的处理。后续将会使用git去读取配置,或者是做myCat的使用挑一个