我是靠谱客的博主 专注玫瑰,最近开发中收集的这篇文章主要介绍Spring Cloud Alibaba 教程(基于首个毕业版)(九):RestTemplate和Feign整合SentinelRestTemplate整合SentinelFeign整合Sentinel Sentinel 使用姿势总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
RestTemplate整合Sentinel
第一步:打开@SentinelRestTemplate注解配置 yml文件
resttemplate:
sentinel:
# 打开@SentinelRestTemplate注解
enabled: true
第二步:新建BlockHandler类和FallBackHandler类处理限流降级
@Slf4j
public class BlockHandler {
public static SentinelClientHttpResponse handleException(HttpRequest request,
byte[] body,
ClientHttpRequestExecution execution,
BlockException ex){
log.info("block Handler");
return new SentinelClientHttpResponse();
}
}
@Slf4j
public class FallBackHandler {
public static SentinelClientHttpResponse fallBackHandle(HttpRequest request,
byte[] body,
ClientHttpRequestExecution execution,
BlockException ex){
log.info("fallBack Handler");
return new SentinelClientHttpResponse("异常出现");
}
}
第三步:RestTemplate 添加 @SentinelRestTemplate 注解
@Bean
//整合Ribbon 的注解
@LoadBalanced
//整合Sentinel和RestTemplate
@SentinelRestTemplate(blockHandler = "handleException",blockHandlerClass = BlockHandler.class,
fallback = "fallBackHandle", fallbackClass = FallBackHandler.class)
public RestTemplate restTemplate() {
return new RestTemplate();
}
第四步:测试类
@Autowired
private RestTemplate restTemplate;
@GetMapping("/test-sentinel-rest-templeate/{userId}")
public UserDTO testSentinelRestTemplate(@PathVariable Integer userId){
return this.restTemplate.getForObject("http://center-user/users/{userId}",
UserDTO.class,userId);
}
第五步:在控制台设置限流降级策略进行测试
测试结果省略
Feign整合Sentinel
第一步:开启sentinel对feign的支持
feign:
sentinel:
enabled: true
第二步:两种处理限流降级发生情况可根据自己业务需要选择其一
- 限流降级发生时,定制自己的处理逻辑
在 @FeignClient 加上fallback
@FeignClient(name = "center-user",
fallback = UserCenterFeignClientFallback.class)
public interface CenterUserFeignClient {
@GetMapping("/users/{id}")
UserDTO findById(@PathVariable Integer id);
}
@Component
public class UserCenterFeignClientFallback implements CenterUserFeignClient {
@Override
public UserDTO findById(Integer id) {
// 自己处理业务逻辑
UserDTO userDTO = new UserDTO();
userDTO.setWxNickname("一个默认用户");
return userDTO;
}
}
2. 限流降级发送时,获取异常
在 @FeignClient 加上 fallbackFactory
@FeignClient(name = "center-user",
fallbackFactory = UserCenterFeignClientFallbackFactory.class)
public interface CenterUserFeignClient {
@GetMapping("/users/{id}")
UserDTO findById(@PathVariable Integer id);
}
@Component
@Slf4j
public class UserCenterFeignClientFallbackFactory implements FallbackFactory<CenterUserFeignClient> {
@Override
public CenterUserFeignClient create(Throwable throwable) {
return new CenterUserFeignClient() {
@Override
public UserDTO findById(Integer id) {
log.warn("远程调用被限流/降级了",throwable);
UserDTO userDTO = new UserDTO();
userDTO.setWxNickname("一个默认用户");
return userDTO;
}
};
}
}
第三步:请求接口http://127.0.0.1:8010/shares/1 设置限流降级策略,进行测试
测试结果省略
Sentinel 使用姿势总结
使用名称 | 使用方式 | 使用方法 |
---|---|---|
编码方式 | API | try...catch..finally.. |
注解方式 | SentinelResource | blockHandler/fallback |
RestTemplate | SentinelRestTemplate | blockHandler/fallback |
Feign | feign.sentinel.enabled=true | fallback/fallbackFactory |
最后
以上就是专注玫瑰为你收集整理的Spring Cloud Alibaba 教程(基于首个毕业版)(九):RestTemplate和Feign整合SentinelRestTemplate整合SentinelFeign整合Sentinel Sentinel 使用姿势总结的全部内容,希望文章能够帮你解决Spring Cloud Alibaba 教程(基于首个毕业版)(九):RestTemplate和Feign整合SentinelRestTemplate整合SentinelFeign整合Sentinel Sentinel 使用姿势总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复