我是靠谱客的博主 专注玫瑰,最近开发中收集的这篇文章主要介绍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

第二步:两种处理限流降级发生情况可根据自己业务需要选择其一

  1. 限流降级发生时,定制自己的处理逻辑

在 @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 使用姿势总结

使用名称使用方式使用方法
编码方式APItry...catch..finally..
注解方式SentinelResourceblockHandler/fallback
RestTemplateSentinelRestTemplateblockHandler/fallback
Feignfeign.sentinel.enabled=truefallback/fallbackFactory


 

最后

以上就是专注玫瑰为你收集整理的Spring Cloud Alibaba 教程(基于首个毕业版)(九):RestTemplate和Feign整合SentinelRestTemplate整合SentinelFeign整合Sentinel Sentinel 使用姿势总结的全部内容,希望文章能够帮你解决Spring Cloud Alibaba 教程(基于首个毕业版)(九):RestTemplate和Feign整合SentinelRestTemplate整合SentinelFeign整合Sentinel Sentinel 使用姿势总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部