在扩展FlowSlot后,会关联FlowRuleManager.getFlowRuleMap(),但是在FlowRuleManager中getFlowRuleMap是private,请问这种应该如何解决,或者如何正确的扩展FlowSlot?谢谢!
6ojccjat1#
目前 getFlowRuleMap 不可直接调用,但是你可以自己维护一个FlowRuleMap,并通过以下方式感知FlowRule的变更,方便维护你的FlowRuleMap。后续正常编写你的限流逻辑即可
getFlowRuleMap
DynamicSentinelProperty<List<FlowRule>> dynamicSentinelProperty = new DynamicSentinelProperty<>(); dynamicSentinelProperty.addListener(new PropertyListener<List<FlowRule>>() { @Override public void configUpdate(List<FlowRule> flowRules) { //TODO 做你的FlowRule变更逻辑 } @Override public void configLoad(List<FlowRule> flowRules) { //TODO 做你的FlowRule加载逻辑 } }); FlowRuleManager.register2Property(dynamicSentinelProperty);
6qftjkof2#
其实不用维护自己的FlowRuleMap。 register2Property 这个方法会执行 property.addListener(LISTENER); ,而 LISTENER 就是 FlowRuleManager 的静态变量,该LISTENER监听配置变化,会更新 FlowRuleManager 的静态变量 flowRules
register2Property
property.addListener(LISTENER);
LISTENER
FlowRuleManager
flowRules
2uluyalo3#
我理解题主的意思是想自己做限流扩展,但因没有暴露public API,无法直接获取FlowRuleMap,所以可以自己监听变更,自行通过 FlowRuleManager.getRules 来维护一个FlowRuleMap。
FlowRuleManager.getRules
kxxlusnw4#
是的
4条答案
按热度按时间6ojccjat1#
目前
getFlowRuleMap
不可直接调用,但是你可以自己维护一个FlowRuleMap,并通过以下方式感知FlowRule的变更,方便维护你的FlowRuleMap。后续正常编写你的限流逻辑即可6qftjkof2#
目前
getFlowRuleMap
不可直接调用,但是你可以自己维护一个FlowRuleMap,并通过以下方式感知FlowRule的变更,方便维护你的FlowRuleMap。后续正常编写你的限流逻辑即可其实不用维护自己的FlowRuleMap。
register2Property
这个方法会执行property.addListener(LISTENER);
,而LISTENER
就是FlowRuleManager
的静态变量,该LISTENER监听配置变化,会更新FlowRuleManager
的静态变量flowRules
2uluyalo3#
目前
getFlowRuleMap
不可直接调用,但是你可以自己维护一个FlowRuleMap,并通过以下方式感知FlowRule的变更,方便维护你的FlowRuleMap。后续正常编写你的限流逻辑即可其实不用维护自己的FlowRuleMap。
register2Property
这个方法会执行property.addListener(LISTENER);
,而LISTENER
就是FlowRuleManager
的静态变量,该LISTENER监听配置变化,会更新FlowRuleManager
的静态变量flowRules
我理解题主的意思是想自己做限流扩展,但因没有暴露public API,无法直接获取FlowRuleMap,所以可以自己监听变更,自行通过
FlowRuleManager.getRules
来维护一个FlowRuleMap。kxxlusnw4#
目前
getFlowRuleMap
不可直接调用,但是你可以自己维护一个FlowRuleMap,并通过以下方式感知FlowRule的变更,方便维护你的FlowRuleMap。后续正常编写你的限流逻辑即可其实不用维护自己的FlowRuleMap。
register2Property
这个方法会执行property.addListener(LISTENER);
,而LISTENER
就是FlowRuleManager
的静态变量,该LISTENER监听配置变化,会更新FlowRuleManager
的静态变量flowRules
我理解题主的意思是想自己做限流扩展,但因没有暴露public API,无法直接获取FlowRuleMap,所以可以自己监听变更,自行通过
FlowRuleManager.getRules
来维护一个FlowRuleMap。是的