黑名单规则:
public void initBlackWhite() {
AuthorityRule rule = new AuthorityRule();
rule.setResource("resource1");
rule.setStrategy(RuleConstant.AUTHORITY_BLACK);
rule.setLimitApp("resource3");
AuthorityRuleManager.loadRules(Collections.singletonList(rule));
}
接口:resource3调用resource1
@RequestMapping("/blackWhite")
public String blackWhite() {
ContextUtil.enter("resource1", "resource3");
String s = resource3.call("blackWhite");
ContextUtil.exit();
return s;
}
resource3定义: @SentinelResource(value = "resource3", blockHandler = "blockHandler", fallback = "fallback") public String call(String name) { String s = resource1.call(name); return s; } resource1定义: @SentinelResource(value = "resource1", blockHandler = "blockHandler", fallback = "fallback") public String call(String name) { return name + "1"; }
问题:
以下main函数硬编码方式正常限流,但是通过浏览器访问上述接口/blackWhite始终无法限流,这是什么原因?调用方resource3已经通过编码声明了,但好像没有效果。
public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(Demo01Application.class, args);
Resource1 resource1 = context.getBean(Resource1.class);
Resource3 resource3 = context.getBean(Resource3.class);
ContextUtil.enter("resource1", "resource3");
System.out.println(resource3.call("111"));
ContextUtil.exit();
}
版本:
org.springframework.boot spring-boot-dependencies 2.4.4 pom import org.springframework.cloud spring-cloud-dependencies 2020.0.4 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2021.1 pom import
原提问者GitHub用户tearsmoon
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Web 入口的来源应由对应的 origin parser 所解析,ContextUtil 在这里无效。可以参考 FAQ 里面的指引。
原回答者GitHub用户sczyh30
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。