前言
记录下RestTemplate
整合Sentinel
的方式Sentinel
的整合查看:SpringCloudAlibaba - 整合 Sentinel 实现服务限流
环境
Spring Cloud Hoxton.SR9 + Spring Cloud Alibaba 2.2.6.RELEASE + Sentinel 1.8.1
具体实现
- 实现内容中心使用
RestTemplate
调用用户中心接口限流
内容中心
- 使用
@SentinelRestTemplate
注解为RestTemplate
整合Sentinel
@Bean
@LoadBalanced
@SentinelRestTemplate
public RestTemplate restTemplate() {
return new RestTemplate();
}
TestController.java
@RestController
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestController {
private final RestTemplate restTemplate;
/**
* 为RestTemplate 整合Sentinel
* @return
*/
@GetMapping("test5")
public String test5() {
return restTemplate.getForObject(
"http://user-center/test/{name}",
String.class,
"Coisini"
);
}
}
用户中心
TestController.java
@RestController
@Slf4j
public class TestController {
@GetMapping("/test/{name}")
public String test(@PathVariable String name) {
log.info("请求...");
return "hello " + name;
}
}
测试
- 接口调用
- 添加一条
QPS
为1
的流控规则
- 频繁访问接口被限流
关闭@SentinelRestTemplate注解
resttemplate:
sentinel:
enabled: false