From bc8e2179e601a1836681562e785b4c1c16f9faef Mon Sep 17 00:00:00 2001 From: Ganesh Pagade Date: Sun, 21 Oct 2018 18:22:58 +0530 Subject: [PATCH] basic service with rate limit --- .../spring-cloud-zuul-throttling/pom.xml | 80 +++++++++++++++++++ .../ZuulRatelimitDemoApplication.java | 12 +++ .../controller/GreetingController.java | 23 ++++++ .../src/main/resources/application.yml | 23 ++++++ .../ZuulRatelimitDemoApplicationTests.java | 16 ++++ 5 files changed, 154 insertions(+) create mode 100644 spring-cloud/spring-cloud-zuul-throttling/pom.xml create mode 100644 spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplication.java create mode 100644 spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/controller/GreetingController.java create mode 100644 spring-cloud/spring-cloud-zuul-throttling/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-zuul-throttling/src/test/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplicationTests.java diff --git a/spring-cloud/spring-cloud-zuul-throttling/pom.xml b/spring-cloud/spring-cloud-zuul-throttling/pom.xml new file mode 100644 index 0000000000..180cc96f00 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-throttling/pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + + com.baeldung.spring.cloud + zuul-ratelimit-demo + 0.0.1-SNAPSHOT + jar + + zuul-ratelimit-demo + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.6.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Finchley.SR1 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-netflix-zuul + + + com.marcosbarbero.cloud + spring-cloud-zuul-ratelimit + LATEST + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.h2database + h2 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplication.java b/spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplication.java new file mode 100644 index 0000000000..18a779f976 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.spring.cloud.zuulratelimitdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ZuulRatelimitDemoApplication { + + public static void main(String[] args) { + SpringApplication.run(ZuulRatelimitDemoApplication.class, args); + } +} diff --git a/spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/controller/GreetingController.java b/spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/controller/GreetingController.java new file mode 100644 index 0000000000..ed380d17ea --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-throttling/src/main/java/com/baeldung/spring/cloud/zuulratelimitdemo/controller/GreetingController.java @@ -0,0 +1,23 @@ +package com.baeldung.spring.cloud.zuulratelimitdemo.controller; + +import org.springframework.cloud.client.SpringCloudApplication; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@EnableZuulProxy +@SpringCloudApplication +@RequestMapping("/greeting") +public class GreetingController { + + @GetMapping("/simple") + public ResponseEntity serviceA() { + return ResponseEntity.ok("Hi!"); + } + + @GetMapping("/advanced") + public ResponseEntity serviceB() { + return ResponseEntity.ok("Hello, how you doing?"); + } +} diff --git a/spring-cloud/spring-cloud-zuul-throttling/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-throttling/src/main/resources/application.yml new file mode 100644 index 0000000000..d3afd34b2c --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-throttling/src/main/resources/application.yml @@ -0,0 +1,23 @@ +zuul: + routes: + serviceSimple: + path: /greeting/simple + url: forward:/ + serviceAdvanced: + path: /greeting/advanced + url: forward:/ + ratelimit: + enabled: true + repository: JPA + policy-list: + serviceSimple: + - limit: 1 + refresh-interval: 60 + type: + - origin + serviceAdvanced: + - limit: 1 + refresh-interval: 2 + type: + - origin + strip-prefix: true diff --git a/spring-cloud/spring-cloud-zuul-throttling/src/test/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplicationTests.java b/spring-cloud/spring-cloud-zuul-throttling/src/test/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplicationTests.java new file mode 100644 index 0000000000..134d400b21 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-throttling/src/test/java/com/baeldung/spring/cloud/zuulratelimitdemo/ZuulRatelimitDemoApplicationTests.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.cloud.zuulratelimitdemo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ZuulRatelimitDemoApplicationTests { + + @Test + public void contextLoads() { + } + +}