在Spring Cloud Alibaba中,熔断器Sentinel取代了Hystrix的角色。以下是使用Spring Cloud Alibaba Sentinel实现熔断逻辑的示例:
- 首先,在pom.xml中添加Sentinel依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 在application.yml中配置Sentinel规则,例如流量控制规则:
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080 # Sentinel 控制台地址
port: 8719 # 本地端口,用于接收Sentinel控制台的push
datasource:
flow:
default:
resource: /flowLimit
count: 1
grade: 1
limitApp: default
- 在Java代码中使用注解@SentinelResource定义资源,并设置熔断降级逻辑:
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
@SentinelResource(value = "test", blockHandler = "handleException")
public String test() {
return "Test";
}
public String handleException(BlockException ex) {
return "Service is busy, please try again later.";
}
}
在上述代码中,我们定义了一个名为"test"的资源,并指定了当熔断器被触发时,调用handleException
方法来处理请求。
这样,你就可以使用Spring Cloud Alibaba Sentinel来实现服务的熔断保护。