Spring Cloud入门-Hystrix断路器(Hoxton版本)

本文详细解读了一线大厂Java面试中关于Hystrix框架的实践应用,包括服务降级策略、请求缓存、信号量隔离、CircuitBreaker和请求合并技术,以及实战项目源码分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

此处省略了创建用户类User和统一返回前端的响应类Result,RestTemplate配置,UserService接口的创建,具体的可以参考项目源码

@RestController

@RequestMapping(“/user”)

public class UserHystrixController {

@Autowired

private UserService userService;

@GetMapping(“/testFallback/{id}”)

public Result testFallback(@PathVariable Long id) {

return userService.getUser(id);

}

@GetMapping(“/testException/{id}”)

public Result testException(@PathVariable Long id) {

return userService.getUserException(id);

}

@GetMapping(“/testCommand/{id}”)

public Result getUserCommand(@PathVariable Long id) {

return userService.getUserCommand(id);

}

@GetMapping(“/testCache/{id}”)

public Result testCache(@PathVariable Long id) {

userService.getUserCache(id);

userService.getUserCache(id);

userService.getUserCache(id);

return new Result(“操作成功”, 200);

}

@GetMapping(“/testRemoveCache/{id}”)

public Result testRemoveCache(@PathVariable Long id) {

userService.getUserCache(id);

userService.removeCache(id);

userService.getUserCache(id);

return new Result(“操作成功”, 200);

}

@GetMapping(“/testCollapser”)

public Result testCollapser() throws ExecutionException, InterruptedException {

Future future1 = userService.getUserFuture(1L);

Future future2 = userService.getUserFuture(2L);

future1.get();

future2.get();

ThreadUtil.safeSleep(200);

Future future3 = userService.getUserFuture(3L);

future3.get();

return new Result(“操作成功”, 200);

}

}

服务降级演示


在UserHystrixController中添加用于测试服务降级的接口:

@GetMapping(“/testFallback/{id}”)

public Result testFallback(@PathVariable Long id) {

return userService.getUser(id);

}

在UserService中添加调用方法与服务降级方法,方法上需要添加@HystrixCommand注解:

@HystrixCommand(fallbackMethod = “fallbackMethod1”)

public Result getUser(Long id) {

return restTemplate.getForObject(userServiceUrl + “/user/{1}”, Result.class, id);

}

/**

  • 声明的参数需要包含controller的声明参数

  • @param id

  • @return

*/

public Result fallbackMethod1(@PathVariable Long id) {

return new Result(“服务调用失败”, 500);

}

启动eureka-server、user-service、hystrix-service服务

在这里插入图片描述

调用接口进行测试:http://localhost:8401/user/testFallback/1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值