rules = new HashSet<>();
+ rules.add(new GatewayFlowRule("aliyun_route")
+ .setCount(10)
+ .setIntervalSec(1)
+ );
+ rules.add(new GatewayFlowRule("aliyun_route")
+ .setCount(2)
+ .setIntervalSec(2)
+ .setBurst(2)
+ .setParamItem(new GatewayParamFlowItem()
+ .setParseStrategy(SentinelGatewayConstants.PARAM_PARSE_STRATEGY_CLIENT_IP)
+ )
+ );
+ rules.add(new GatewayFlowRule("httpbin_route")
+ .setCount(10)
+ .setIntervalSec(1)
+ .setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)
+ .setMaxQueueingTimeoutMs(600)
+ .setParamItem(new GatewayParamFlowItem()
+ .setParseStrategy(SentinelGatewayConstants.PARAM_PARSE_STRATEGY_HEADER)
+ .setFieldName("X-Sentinel-Flag")
+ )
+ );
+ rules.add(new GatewayFlowRule("httpbin_route")
+ .setCount(1)
+ .setIntervalSec(1)
+ .setParamItem(new GatewayParamFlowItem()
+ .setParseStrategy(SentinelGatewayConstants.PARAM_PARSE_STRATEGY_URL_PARAM)
+ .setFieldName("pa")
+ )
+ );
+
+ rules.add(new GatewayFlowRule("some_customized_api")
+ .setResourceMode(SentinelGatewayConstants.RESOURCE_MODE_CUSTOM_API_NAME)
+ .setCount(5)
+ .setIntervalSec(1)
+ .setParamItem(new GatewayParamFlowItem()
+ .setParseStrategy(SentinelGatewayConstants.PARAM_PARSE_STRATEGY_URL_PARAM)
+ .setFieldName("pn")
+ )
+ );
+ GatewayRuleManager.loadRules(rules);
+ }
+}
diff --git a/sentinel-demo/sentinel-demo-spring-cloud-gateway/src/main/java/com/alibaba/csp/sentinel/demo/spring/sc/gateway/GatewayDemoApplication.java b/sentinel-demo/sentinel-demo-spring-cloud-gateway/src/main/java/com/alibaba/csp/sentinel/demo/spring/sc/gateway/GatewayDemoApplication.java
new file mode 100644
index 00000000..2a9ccecd
--- /dev/null
+++ b/sentinel-demo/sentinel-demo-spring-cloud-gateway/src/main/java/com/alibaba/csp/sentinel/demo/spring/sc/gateway/GatewayDemoApplication.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 1999-2019 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
+ *
+ * https://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.spring.sc.gateway;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * A demo for Spring Cloud Gateway.
+ *
+ * To integrate with Sentinel dashboard, you can run the demo with the parameters (an example):
+ * -Dproject.name=spring-cloud-gateway -Dcsp.sentinel.dashboard.server=localhost:8080
+ * -Dcsp.sentinel.api.port=8720 -Dcsp.sentinel.app.type=1
+ *
+ *
+ *
+ * @author Eric Zhao
+ */
+@SpringBootApplication
+public class GatewayDemoApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(GatewayDemoApplication.class, args);
+ }
+}
diff --git a/sentinel-demo/sentinel-demo-spring-cloud-gateway/src/main/resources/application.yml b/sentinel-demo/sentinel-demo-spring-cloud-gateway/src/main/resources/application.yml
new file mode 100644
index 00000000..9acdfe7a
--- /dev/null
+++ b/sentinel-demo/sentinel-demo-spring-cloud-gateway/src/main/resources/application.yml
@@ -0,0 +1,23 @@
+server:
+ port: 8090
+spring:
+ application:
+ name: spring-cloud-gateway
+ cloud:
+ gateway:
+ enabled: true
+ discovery:
+ locator:
+ lower-case-service-id: true
+ routes:
+ # Add your routes here.
+ - id: aliyun_route
+ uri: https://www.aliyun.com/
+ predicates:
+ - Path=/product/**
+ - id: httpbin_route
+ uri: https://httpbin.org
+ predicates:
+ - Path=/httpbin/**
+ filters:
+ - RewritePath=/httpbin/(?.*), /$\{segment}
\ No newline at end of file