Update demo of various data source to adapt to new changes
Signed-off-by: Eric Zhao <sczyh16@gmail.com>
This commit is contained in:
parent
c70d6e92bc
commit
f3eb285445
|
|
@ -1,11 +1,12 @@
|
||||||
package com.alibaba.csp.sentinel.demo.datasource.apollo;
|
package com.alibaba.csp.sentinel.demo.datasource.apollo;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.DataSource;
|
import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
|
||||||
import com.alibaba.csp.sentinel.datasource.apollo.ApolloDataSource;
|
import com.alibaba.csp.sentinel.datasource.apollo.ApolloDataSource;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -37,6 +38,7 @@ import java.util.List;
|
||||||
* @author Jason Song
|
* @author Jason Song
|
||||||
*/
|
*/
|
||||||
public class ApolloDataSourceDemo {
|
public class ApolloDataSourceDemo {
|
||||||
|
|
||||||
private static final String KEY = "TestResource";
|
private static final String KEY = "TestResource";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
@ -48,11 +50,8 @@ public class ApolloDataSourceDemo {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void loadRules() {
|
private static void loadRules() {
|
||||||
/**
|
// Set up basic information, only for demo purpose. You may adjust them based on your actual environment.
|
||||||
* Set up basic information, only for demo purpose. You may adjust them based on your actual environment.
|
// For more information, please refer https://github.com/ctripcorp/apollo
|
||||||
* <br />
|
|
||||||
* For more information, please refer https://github.com/ctripcorp/apollo
|
|
||||||
*/
|
|
||||||
String appId = "sentinel-demo";
|
String appId = "sentinel-demo";
|
||||||
String apolloMetaServerAddress = "http://localhost:8080";
|
String apolloMetaServerAddress = "http://localhost:8080";
|
||||||
System.setProperty("app.id", appId);
|
System.setProperty("app.id", appId);
|
||||||
|
|
@ -60,10 +59,11 @@ public class ApolloDataSourceDemo {
|
||||||
|
|
||||||
String namespaceName = "application";
|
String namespaceName = "application";
|
||||||
String flowRuleKey = "flowRules";
|
String flowRuleKey = "flowRules";
|
||||||
String defaultFlowRules = "[]"; //it's better to provide a meaningful default value
|
// It's better to provide a meaningful default value.
|
||||||
|
String defaultFlowRules = "[]";
|
||||||
|
|
||||||
DataSource<String, List<FlowRule>> flowRuleDataSource = new ApolloDataSource<>(namespaceName, flowRuleKey,
|
ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new ApolloDataSource<>(namespaceName,
|
||||||
defaultFlowRules, source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {
|
flowRuleKey, defaultFlowRules, source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {
|
||||||
}));
|
}));
|
||||||
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,18 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven.compiler.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<encoding>${java.encoding}</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -15,14 +15,12 @@
|
||||||
*/
|
*/
|
||||||
package com.alibaba.csp.sentinel.demo.file.rule;
|
package com.alibaba.csp.sentinel.demo.file.rule;
|
||||||
|
|
||||||
|
import java.net.URLDecoder;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
import com.alibaba.csp.sentinel.datasource.DataSource;
|
import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
|
||||||
import com.alibaba.csp.sentinel.datasource.FileRefreshableDataSource;
|
import com.alibaba.csp.sentinel.datasource.FileRefreshableDataSource;
|
||||||
import com.alibaba.csp.sentinel.demo.file.rule.parser.JsonDegradeRuleListParser;
|
|
||||||
import com.alibaba.csp.sentinel.demo.file.rule.parser.JsonFlowRuleListParser;
|
|
||||||
import com.alibaba.csp.sentinel.demo.file.rule.parser.JsonSystemRuleListParser;
|
|
||||||
import com.alibaba.csp.sentinel.property.PropertyListener;
|
import com.alibaba.csp.sentinel.property.PropertyListener;
|
||||||
import com.alibaba.csp.sentinel.property.SentinelProperty;
|
import com.alibaba.csp.sentinel.property.SentinelProperty;
|
||||||
import com.alibaba.csp.sentinel.slots.block.Rule;
|
import com.alibaba.csp.sentinel.slots.block.Rule;
|
||||||
|
|
@ -32,6 +30,8 @@ import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||||
import com.alibaba.csp.sentinel.slots.system.SystemRule;
|
import com.alibaba.csp.sentinel.slots.system.SystemRule;
|
||||||
import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;
|
import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.TypeReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|
@ -40,9 +40,9 @@ import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;
|
||||||
* inform the listener if the file is updated.
|
* inform the listener if the file is updated.
|
||||||
* </p>
|
* </p>
|
||||||
* <p>
|
* <p>
|
||||||
* Each {@link DataSource} has a {@link SentinelProperty} to hold the deserialized config data.
|
* Each {@link ReadableDataSource} has a {@link SentinelProperty} to hold the deserialized config data.
|
||||||
* {@link PropertyListener} will listen to the {@link SentinelProperty} instead of the datasource.
|
* {@link PropertyListener} will listen to the {@link SentinelProperty} instead of the datasource.
|
||||||
* {@link ConfigParser} is used for telling how to deserialize the data.
|
* {@link Converter} is used for telling how to deserialize the data.
|
||||||
* </p>
|
* </p>
|
||||||
* <p>
|
* <p>
|
||||||
* {@link FlowRuleManager#register2Property(SentinelProperty)},
|
* {@link FlowRuleManager#register2Property(SentinelProperty)},
|
||||||
|
|
@ -52,11 +52,12 @@ import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;
|
||||||
* </p>
|
* </p>
|
||||||
* <p>
|
* <p>
|
||||||
* For other kinds of data source, such as <a href="https://github.com/alibaba/nacos">Nacos</a>,
|
* For other kinds of data source, such as <a href="https://github.com/alibaba/nacos">Nacos</a>,
|
||||||
* Zookeeper, Git, or even CSV file, We could implement {@link DataSource} interface to read these
|
* Zookeeper, Git, or even CSV file, We could implement {@link ReadableDataSource} interface to read these
|
||||||
* configs.
|
* configs.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author Carpenter Lee
|
* @author Carpenter Lee
|
||||||
|
* @author Eric Zhao
|
||||||
*/
|
*/
|
||||||
public class FileDataSourceDemo {
|
public class FileDataSourceDemo {
|
||||||
|
|
||||||
|
|
@ -64,7 +65,7 @@ public class FileDataSourceDemo {
|
||||||
FileDataSourceDemo demo = new FileDataSourceDemo();
|
FileDataSourceDemo demo = new FileDataSourceDemo();
|
||||||
demo.listenRules();
|
demo.listenRules();
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Start to require tokens, rate will be limited by rule in FlowRule.json
|
* Start to require tokens, rate will be limited by rule in FlowRule.json
|
||||||
*/
|
*/
|
||||||
FlowQpsRunner runner = new FlowQpsRunner();
|
FlowQpsRunner runner = new FlowQpsRunner();
|
||||||
|
|
@ -72,25 +73,38 @@ public class FileDataSourceDemo {
|
||||||
runner.tick();
|
runner.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void listenRules() throws Exception {
|
private void listenRules() throws Exception {
|
||||||
ClassLoader classLoader = getClass().getClassLoader();
|
ClassLoader classLoader = getClass().getClassLoader();
|
||||||
String flowRulePath = classLoader.getResource("FlowRule.json").getFile();
|
String flowRulePath = URLDecoder.decode(classLoader.getResource("FlowRule.json").getFile(), "UTF-8");
|
||||||
String degradeRulePath = classLoader.getResource("DegradeRule.json").getFile();
|
String degradeRulePath = URLDecoder.decode(classLoader.getResource("DegradeRule.json").getFile(), "UTF-8");
|
||||||
String systemRulePath = classLoader.getResource("SystemRule.json").getFile();
|
String systemRulePath = URLDecoder.decode(classLoader.getResource("SystemRule.json").getFile(), "UTF-8");
|
||||||
|
|
||||||
// data source for FlowRule
|
// Data source for FlowRule
|
||||||
DataSource<String, List<FlowRule>> flowRuleDataSource = new FileRefreshableDataSource<List<FlowRule>>(
|
FileRefreshableDataSource<List<FlowRule>> flowRuleDataSource = new FileRefreshableDataSource<>(
|
||||||
flowRulePath, new JsonFlowRuleListParser());
|
flowRulePath, flowRuleListParser, this::encodeJson);
|
||||||
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
||||||
|
|
||||||
// data source for DegradeRule
|
// Data source for DegradeRule
|
||||||
DataSource<String, List<DegradeRule>> degradeRuleDataSource = new FileRefreshableDataSource<List<DegradeRule>>(
|
FileRefreshableDataSource<List<DegradeRule>> degradeRuleDataSource
|
||||||
degradeRulePath, new JsonDegradeRuleListParser());
|
= new FileRefreshableDataSource<>(
|
||||||
|
degradeRulePath, degradeRuleListParser, this::encodeJson);
|
||||||
DegradeRuleManager.register2Property(degradeRuleDataSource.getProperty());
|
DegradeRuleManager.register2Property(degradeRuleDataSource.getProperty());
|
||||||
|
|
||||||
// data source for SystemRule
|
// Data source for SystemRule
|
||||||
DataSource<String, List<SystemRule>> systemRuleDataSource = new FileRefreshableDataSource<List<SystemRule>>(
|
FileRefreshableDataSource<List<SystemRule>> systemRuleDataSource
|
||||||
systemRulePath, new JsonSystemRuleListParser());
|
= new FileRefreshableDataSource<>(
|
||||||
|
systemRulePath, systemRuleListParser, this::encodeJson);
|
||||||
SystemRuleManager.register2Property(systemRuleDataSource.getProperty());
|
SystemRuleManager.register2Property(systemRuleDataSource.getProperty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Converter<String, List<FlowRule>> flowRuleListParser = source -> JSON.parseObject(source,
|
||||||
|
new TypeReference<List<FlowRule>>() {});
|
||||||
|
private Converter<String, List<DegradeRule>> degradeRuleListParser = source -> JSON.parseObject(source,
|
||||||
|
new TypeReference<List<DegradeRule>>() {});
|
||||||
|
private Converter<String, List<SystemRule>> systemRuleListParser = source -> JSON.parseObject(source,
|
||||||
|
new TypeReference<List<SystemRule>>() {});
|
||||||
|
|
||||||
|
private <T> String encodeJson(T t) {
|
||||||
|
return JSON.toJSONString(t);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.alibaba.csp.sentinel.demo.file.rule.parser;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
|
||||||
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.TypeReference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ConfigParser} parses Json String to {@code List<DegradeRule>}.
|
|
||||||
*
|
|
||||||
* @author Carpenter Lee
|
|
||||||
*/
|
|
||||||
public class JsonDegradeRuleListParser implements ConfigParser<String, List<DegradeRule>> {
|
|
||||||
@Override
|
|
||||||
public List<DegradeRule> parse(String source) {
|
|
||||||
return JSON.parseObject(source, new TypeReference<List<DegradeRule>>() {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.alibaba.csp.sentinel.demo.file.rule.parser;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.TypeReference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ConfigParser} parses Json String to {@code List<FlowRule>}.
|
|
||||||
*
|
|
||||||
* @author Carpenter Lee
|
|
||||||
*/
|
|
||||||
public class JsonFlowRuleListParser implements ConfigParser<String, List<FlowRule>> {
|
|
||||||
@Override
|
|
||||||
public List<FlowRule> parse(String source) {
|
|
||||||
return JSON.parseObject(source, new TypeReference<List<FlowRule>>() {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.alibaba.csp.sentinel.demo.file.rule.parser;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
|
||||||
import com.alibaba.csp.sentinel.slots.system.SystemRule;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.TypeReference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ConfigParser} parses Json String to {@code List<SystemRule>}.
|
|
||||||
*
|
|
||||||
* @author Carpenter Lee
|
|
||||||
*/
|
|
||||||
public class JsonSystemRuleListParser implements ConfigParser<String, List<SystemRule>> {
|
|
||||||
@Override
|
|
||||||
public List<SystemRule> parse(String source) {
|
|
||||||
return JSON.parseObject(source, new TypeReference<List<SystemRule>>() {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -17,7 +17,7 @@ package com.alibaba.csp.sentinel.demo.datasource.nacos;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.DataSource;
|
import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
|
||||||
import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
|
import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||||
|
|
@ -49,7 +49,7 @@ public class NacosDataSourceDemo {
|
||||||
final String groupId = "Sentinel:Demo";
|
final String groupId = "Sentinel:Demo";
|
||||||
final String dataId = "com.alibaba.csp.sentinel.demo.flow.rule";
|
final String dataId = "com.alibaba.csp.sentinel.demo.flow.rule";
|
||||||
|
|
||||||
DataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId,
|
ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId,
|
||||||
source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
|
source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
|
||||||
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.alibaba.csp.sentinel.demo.datasource.zookeeper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.DataSource;
|
import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
|
||||||
import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource;
|
import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||||
|
|
@ -10,7 +10,7 @@ import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Zookeeper DataSource Demo
|
* Zookeeper ReadableDataSource Demo
|
||||||
*
|
*
|
||||||
* @author guonanjun
|
* @author guonanjun
|
||||||
*/
|
*/
|
||||||
|
|
@ -29,7 +29,7 @@ public class ZookeeperDataSourceDemo {
|
||||||
final String remoteAddress = "127.0.0.1:2181";
|
final String remoteAddress = "127.0.0.1:2181";
|
||||||
final String path = "/Sentinel-Demo/SYSTEM-CODE-DEMO-FLOW";
|
final String path = "/Sentinel-Demo/SYSTEM-CODE-DEMO-FLOW";
|
||||||
|
|
||||||
DataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, path,
|
ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, path,
|
||||||
source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
|
source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
|
||||||
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
||||||
|
|
||||||
|
|
@ -49,15 +49,15 @@ public class ZookeeperDataSourceDemo {
|
||||||
// 规则会持久化到zk的/groupId/flowDataId节点
|
// 规则会持久化到zk的/groupId/flowDataId节点
|
||||||
// groupId和和flowDataId可以用/开头也可以不用
|
// groupId和和flowDataId可以用/开头也可以不用
|
||||||
// 建议不用以/开头,目的是为了如果从Zookeeper切换到Nacos的话,只需要改数据源类名就可以
|
// 建议不用以/开头,目的是为了如果从Zookeeper切换到Nacos的话,只需要改数据源类名就可以
|
||||||
DataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, groupId, flowDataId,
|
ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, groupId, flowDataId,
|
||||||
source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
|
source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
|
||||||
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
|
||||||
|
|
||||||
// DataSource<String, List<DegradeRule>> degradeRuleDataSource = new ZookeeperDataSource<>(remoteAddress, groupId, degradeDataId,
|
// ReadableDataSource<String, List<DegradeRule>> degradeRuleDataSource = new ZookeeperDataSource<>(remoteAddress, groupId, degradeDataId,
|
||||||
// source -> JSON.parseObject(source, new TypeReference<List<DegradeRule>>() {}));
|
// source -> JSON.parseObject(source, new TypeReference<List<DegradeRule>>() {}));
|
||||||
// DegradeRuleManager.register2Property(degradeRuleDataSource.getProperty());
|
// DegradeRuleManager.register2Property(degradeRuleDataSource.getProperty());
|
||||||
//
|
//
|
||||||
// DataSource<String, List<SystemRule>> systemRuleDataSource = new ZookeeperDataSource<>(remoteAddress, groupId, systemDataId,
|
// ReadableDataSource<String, List<SystemRule>> systemRuleDataSource = new ZookeeperDataSource<>(remoteAddress, groupId, systemDataId,
|
||||||
// source -> JSON.parseObject(source, new TypeReference<List<SystemRule>>() {}));
|
// source -> JSON.parseObject(source, new TypeReference<List<SystemRule>>() {}));
|
||||||
// SystemRuleManager.register2Property(systemRuleDataSource.getProperty());
|
// SystemRuleManager.register2Property(systemRuleDataSource.getProperty());
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue