SpringCloud 系列实战 | 第六篇: 服务消费者整合(Feign+Hystrix)使用Feign自带的Hystrix机制进行服务熔断降级(SpringBoot)(2.X版本)

it2024-12-24  19

SpringCloud 系列实战 | 第六篇: 服务消费者整合(Feign+Hystrix)使用Feign自带的Hystrix机制进行服务熔断降级(SpringBoot)(2.X版本)

一、此文章是在第五篇基础上进行的改动: 1.1 项目添加pom依赖

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

二、配置文件信息-Feign的信息

#以下是FeignClient的Hystrix熔断功能必须要依赖于feign开启超时时间设置 #feign.client.config.default.read-timeout=5000 时间必须大于hystrix熔断的时间;要不然feign的超时时间就会生效导致熔断 #开启Feign熔断支持 feign.hystrix.enabled=true #设置hystrix熔断器检测时间(默认1秒) hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000 #feign调用接口处理响应时间 feign.client.config.default.read-timeout=5000 #feign建立请求连接时间 feign.client.config.default.connect-timeout=2000

2.1 Feign和Hystrix代码

@FeignClient(value = "PROVIDER-SERVER",configuration = FeignConfiguration.class, fallbackFactory = TestFeignFallback.class) public interface TestFeign { @GetMapping(value = "/getTest") String getTest(); } @Component public class TestFeignFallback implements FallbackFactory<TestFeign> { @Override public TestFeign create(Throwable throwable) { return new TestFeign() { @Override public String getTest() { return "调用失败-服务降级"; } }; } }

三、项目整体结构:

四、启动 8900注册中心、8901提供者、8902消费者服务

五、浏览器访问测试 http://localhost:8902/getTest

#设置hystrix熔断器检测时间(默认1秒) hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000

结论:浏览器和控制台都显示返回成功,消耗时间是75ms 而我们配置的熔断时间是3000ms 结论:请求成功,没有触发熔断机制。

5.1 测试(请求超时)触发熔断机制Hystrix;给8901服务提供者接口打上Debug模式,让服务处于等待超过3000ms来触发熔断机制

#设置hystrix熔断器检测时间(默认1秒) hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000

结论:浏览器和控制台都返回了-调用失败-服务降级;此时的请求是3103ms 显然是大于了我们所配置的熔断时间3000ms 因此我们配置的熔断机制生效-(请求超时)触发熔断机制-测试验证成功。

5.2 测试feign调用接口处理响应时间生效机制

#feign调用接口处理响应时间 feign.client.config.default.read-timeout=5000

浏览器访问:http://localhost:8902/getTest 结论:根据控制台打印的信息,此请求时间耗时5013ms 显然大于我们想项目配置文件配置的5000ms 此时Feign的调用接口处理响应时间机制已生效,直接触发熔断机制-测试验证成功。

5.3 至此:Feign+Hystrix使用Feign自带的Hystrix机制进行服务熔断降级-验证成功。

最新回复(0)