import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import java.util.ArrayList;
import java.util.List;
public class SentinelRateLimiterExample {
static {
// 配置限流规则
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("backendName");
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setCount(5); // 每秒最多允许5个请求
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
public static void main(String[] args) {
// 使用Sentinel进行限流
try (Entry entry = SphU.entry("backendName")) {
// 业务逻辑
System.out.println("Call is permitted");
} catch (BlockException e) {
// 当请求被限流时的处理逻辑
System.out.println("Not permitted to call");
}
}
}
Resilience4J和sentinel 实现单点限流 java代码
最新推荐文章于 2025-04-30 18:33:51 发布