-
resttemplate开启sentinel保护配置
propertiesresttemplate.sentinel.enabled=true -
配置sentinel-dashboard地址
propertiesspring.cloud.sentinel.transport.dashboard=localhost:8858\ spring.cloud.sentinel.transport.dashboard.port=8739 -
实例化RestTemplate并加入@SentinelRestTemplate注解
java@Configuration public class RestTemplateConfig { @Bean @LoadBalanced @SentinelRestTemplate( fallbackClass = ExceptionUtil.class,fallback = "fallBack", blockHandlerClass = ExceptionUtil.class, blockHandler = "handleBlock") public RestTemplate restTemplate() { return new RestTemplate(); } public static class ExceptionUtil { public static ClientHttpResponse handleBlock( HttpRequest request, byte[] body, ClientHttpRequestExecution execution, BlockException be){ RestResponse<Void> commonResult = RestResponse.error("500","降级处理函数 block 。。。。。"); return new SentinelClientHttpResponse(JSON.toJSONString(commonResult)); } public static ClientHttpResponse fallBack( HttpRequest request, byte[] body, ClientHttpRequestExecution execution, BlockException be){ RestResponse<Void> commonResult = RestResponse.error("500","异常处理函数 fallback 。。。。。"); return new SentinelClientHttpResponse(JSON.toJSONString(commonResult)); } } } -
编写测试代码,并使用postman访问对应的url
java@Slf4j @RestController @RequestMapping("/test") public class TestController { @Autowired private RestTemplate restTemplate ; @GetMapping("/index") public RestResponse<String> index(){ String url = "http://hello-nacos-client/hello/index" ; RestResponse<String> retValue = restTemplate.getForObject(url, RestResponse.class); log.info("ret value : {}", retValue); return retValue ; } @GetMapping("/exception") public Object exception(){ String url = "http://hello-nacos-client/hello/exception" ; RestResponse<String> retValue = restTemplate.getForObject(url, RestResponse.class); log.info("ret value : {}", retValue); return retValue ; } } -
在dashboard上配置限流规则,再次通过postman调用url,能正常触发SentinelRestTemplate的blockHandler方法处理
-
在dashboard上配置熔断规则,再次通过postman调用url,能正常触发SentinelRestTemplate的fallBack方法处理
Sentinel整合RestTemplate
yicj2023-09-23 9:53
相关推荐
奋斗的小乌龟几秒前
langchain4j笔记-08leonidZhao3 分钟前
Java25新特性:加密对象的PEM编码计算机安禾6 分钟前
【c++面向对象编程】第21篇:运算符重载基础:语法、规则与不可重载的运算符萧曵 丶8 分钟前
JUC 实际业务高频面试题浅谈初圣魔门首席弟子9 分钟前
bug 2026.05.15(以前能运行的java springboot项目突然间不能运行后台数据了)古怪今人17 分钟前
项目和模块 一个目录下创建多个项目 IDEA Multi-Project Workspace插件小英雄大肚腩丶27 分钟前
RabbitMQ消息队列fengxin_rou39 分钟前
用户模块架构实战:DTO 与 Domain 分层、Optional 空值处理、事务只读优化详解redaijufeng2 小时前
C++构造函数详解:从基础原理到实际应用yuzhiboyouye2 小时前
VO一般java后端怎么转换成前端想要的数据