diff --git a/sentinel-demo/sentinel-demo-nacos-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/nacos/NacosDataSourceDemo.java b/sentinel-demo/sentinel-demo-nacos-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/nacos/NacosDataSourceDemo.java index 51856354d1..00116cde37 100644 --- a/sentinel-demo/sentinel-demo-nacos-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/nacos/NacosDataSourceDemo.java +++ b/sentinel-demo/sentinel-demo-nacos-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/nacos/NacosDataSourceDemo.java @@ -16,6 +16,7 @@ package com.alibaba.csp.sentinel.demo.datasource.nacos; import java.util.List; +import java.util.Properties; import com.alibaba.csp.sentinel.datasource.ReadableDataSource; import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource; @@ -23,10 +24,10 @@ import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; +import com.alibaba.nacos.api.PropertyKeyConst; /** * This demo demonstrates how to use Nacos as the data source of Sentinel rules. - * * Before you start, you need to start a Nacos server in local first, and then * use {@link NacosConfigSender} to publish initial rule configuration to Nacos. * @@ -35,9 +36,24 @@ public class NacosDataSourceDemo { private static final String KEY = "TestResource"; + // nacos server ip + private static final String remoteAddress = "localhost"; + // nacos group + private static final String groupId = "Sentinel:Demo"; + // nacos dataId + private static final String dataId = "com.alibaba.csp.sentinel.demo.flow.rule"; + // if change to true, should be config NACOS_NAMESPACE_ID + private static boolean isDemoNamespace = false; + // fill your namespace id,if you want to use namespace. for example: 0f5c7314-4983-4022-ad5a-347de1d1057d,you can get it on nacos's console + private static final String NACOS_NAMESPACE_ID = "${namespace}"; public static void main(String[] args) { - loadRules(); + if (isDemoNamespace) { + loadMyNamespaceRules(); + } else { + loadRules(); + } + // Assume we config: resource is `TestResource`, initial QPS threshold is 5. FlowQpsRunner runner = new FlowQpsRunner(KEY, 1, 100); runner.simulateTraffic(); @@ -45,12 +61,21 @@ public static void main(String[] args) { } private static void loadRules() { - final String remoteAddress = "localhost"; - final String groupId = "Sentinel:Demo"; - final String dataId = "com.alibaba.csp.sentinel.demo.flow.rule"; - ReadableDataSource> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId, - source -> JSON.parseObject(source, new TypeReference>() {})); + source -> JSON.parseObject(source, new TypeReference>() { + })); + FlowRuleManager.register2Property(flowRuleDataSource.getProperty()); + } + + private static void loadMyNamespaceRules() { + Properties properties = new Properties(); + properties.put(PropertyKeyConst.SERVER_ADDR, remoteAddress); + properties.put(PropertyKeyConst.NAMESPACE, NACOS_NAMESPACE_ID); + + ReadableDataSource> flowRuleDataSource = new NacosDataSource<>(properties, groupId, dataId, + source -> JSON.parseObject(source, new TypeReference>() { + })); FlowRuleManager.register2Property(flowRuleDataSource.getProperty()); } + } diff --git a/sentinel-extension/sentinel-datasource-nacos/pom.xml b/sentinel-extension/sentinel-datasource-nacos/pom.xml index 7e41b2a3e1..9fa6e49818 100644 --- a/sentinel-extension/sentinel-datasource-nacos/pom.xml +++ b/sentinel-extension/sentinel-datasource-nacos/pom.xml @@ -13,7 +13,7 @@ jar - 0.6.2 + 0.8.0