SpringCloud集成Hystrix熔断器
摘要:
熔断器的存在就是为了保证在微服务的调用链中,一旦有某个节点发生故障就立即切断服务并返回托底数据,不至于因为这个节点的故障而将整个微服务拖垮【熔断机制、快速失败、服务降级、服务监控】
==================================Ribbon使用熔断器===================================
一:引入依赖
<!--Hystrix依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
二:在启动类上打上注解@EnableCircuitBreaker开启熔断器的支持
三:在需要熔断的接口方法上打上注解@HystrixCommand(fallbackMethod = "熔断方法")
四:在本接口的同一类中编写熔断方法即可
//降级方法,参数和返回值必须和被熔断的方法一致 ,方法名要和fallbackMethod的值一致
public User getUserHystrix(){
return new User(1l,"熔断器触发",1);
}
==================================OpenFeign使用熔断器===================================
由于OpenFeign是集成了熔断器Hystrix,所以不需要引依赖
一:在application.yml中开启熔断器支持
feign:
hystrix:
enabled:true #开启熔断支持
ribbon:
ReadTimeout: 1000 #读取时间
SocketTimeout: 1000 #响应时间
ConnectTimeout: 1000 #连接时间
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 4000 #超时熔断
二:创建托底数据工厂类
package cn.ybl.FeignClient;
import cn.ybl.pojo.User;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 托底工厂类
*/
@Component
public class UserFeignClientFallbackFactory implements FallbackFactory<UserFeignClient> {
/**
* 生产托底类的方法,需要使用匿名内部类的方式,返回要托底接口的实现类,实现类方法就是托底方法
* @param throwable
* @return
*/
@Override
public UserFeignClient create(Throwable throwable) {
return new UserFeignClient() { //UserFeignClient为需要熔断机制的OpenFeign客户端
@Override
public User getUser() {
return new User(-1L, "触发熔断了", 1);
}
};
}
}
三:在OpenFeign客户端的接口上打上注解,指向此工厂类
package cn.ybl.FeignClient;
import cn.ybl.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* UserServer的feign客户端
*/
//调用的服务的应用名称,指定托底工厂类UserFeignClientFallbackFactory
@FeignClient(value = "UserServer",fallbackFactory = UserFeignClientFallbackFactory.class)
public interface UserFeignClient {
/**
* 方法名称必须跟被代理服务接口方法名称一致
* 请求路径必须跟被代理服务接口一致
* 参数与返回值必须跟被代理服务接口一致
* ——————————————————建议直接复制过来删掉方法体
*/
@GetMapping
User getUser();
}
当UserServer服务发生异常或连接超时时会自动触发熔断并返回托底数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理