diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/pom.xml b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/pom.xml new file mode 100644 index 0000000000..60b6eab020 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + echo-demo + echo-demo + Demo for echo endpoint + + com.baeldung.cloud + spring-cloud-netflix-sidecar + 0.0.1-SNAPSHOT + ../pom.xml + + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-starter-netflix-zuul + 2.2.10.RELEASE + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + 2.2.10.RELEASE + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/java/com/baeldung/cloud/echo/EchoApplication.java b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/java/com/baeldung/cloud/echo/EchoApplication.java new file mode 100644 index 0000000000..d869ba8f65 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/java/com/baeldung/cloud/echo/EchoApplication.java @@ -0,0 +1,48 @@ +package com.baeldung.cloud.echo; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import java.util.List; + +@SpringBootApplication +@EnableEurekaClient +@EnableZuulProxy +@RestController +public class EchoApplication { + @Autowired + DiscoveryClient discoveryClient; + @Autowired + RestTemplate restTemplate; + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + @GetMapping("/hello/{me}") + public ResponseEntity echo(@PathVariable("me") String me) { + List instances = discoveryClient.getInstances("sidecar"); + if (instances.isEmpty()) { + return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body("hello service is down"); + } + String url = instances.get(0).getUri().toString(); + return ResponseEntity.ok(restTemplate.getForObject(url + "/hello/" + me, String.class)); + } + + public static void main(String[] args) { + SpringApplication.run(EchoApplication.class, args); + } +} diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/resources/application.yml b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/resources/application.yml new file mode 100644 index 0000000000..7b13600b73 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/resources/application.yml @@ -0,0 +1,14 @@ +server.port: 8085 +spring: + application: + name: echo +eureka: + instance: + hostname: localhost + leaseRenewalIntervalInSeconds: 1 + leaseExpirationDurationInSeconds: 2 + client: + service-url: + defaultZone: http://127.0.0.1:8761/eureka + healthcheck: + enabled: true diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/test/java/com/baeldung/cloud/echo/SpringContextTest.java b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/test/java/com/baeldung/cloud/echo/SpringContextTest.java new file mode 100644 index 0000000000..af4ba8c71a --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/test/java/com/baeldung/cloud/echo/SpringContextTest.java @@ -0,0 +1,11 @@ +package com.baeldung.cloud.echo; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class SpringContextTest { + @Test + void contextLoads() { + } +} diff --git a/spring-cloud/spring-cloud-netflix-sidecar/pom.xml b/spring-cloud/spring-cloud-netflix-sidecar/pom.xml new file mode 100644 index 0000000000..254a0376b6 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + com.baeldung.cloud + spring-cloud-netflix-sidecar + 0.0.1-SNAPSHOT + pom + spring-cloud-netflix-sidecar + Netflix Sidecar project for Spring Boot + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + sidecar-demo + echo-demo + + + 2.2.10.RELEASE + 2.3.12.RELEASE + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/nodejs/hello.js b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/nodejs/hello.js new file mode 100644 index 0000000000..207bd5449b --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/nodejs/hello.js @@ -0,0 +1,19 @@ +const express = require('express') +const app = express() +const port = 3000 + +app.get('/', (req, res) => { + res.send('Hello World!') +}) + +app.get('/health', (req, res) => { + res.send({ "status":"UP"}) +}) + +app.get('/hello/:me', (req, res) => { + res.send('Hello ' + req.params.me + '!') +}) + +app.listen(port, () => { + console.log(`Hello app listening on port ${port}`) +}) \ No newline at end of file diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/pom.xml b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/pom.xml new file mode 100644 index 0000000000..22032d5081 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + sidecar-demo + sidecar-demo + Sidecar demo for hello endpoint + + com.baeldung.cloud + spring-cloud-netflix-sidecar + 0.0.1-SNAPSHOT + ../pom.xml + + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-netflix-sidecar + ${netflix.cloud.version} + + + io.projectreactor + reactor-core + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.jupiter + junit-jupiter + test + + + org.mockito + mockito-junit-jupiter + test + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/java/com/baeldung/cloud/sidecar/SidecarApplication.java b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/java/com/baeldung/cloud/sidecar/SidecarApplication.java new file mode 100644 index 0000000000..83508e73d2 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/java/com/baeldung/cloud/sidecar/SidecarApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.cloud.sidecar; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.sidecar.EnableSidecar; + +@SpringBootApplication +@EnableSidecar +public class SidecarApplication { + public static void main(String[] args) { + SpringApplication.run(SidecarApplication.class, args); + } +} diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/resources/application.yml b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/resources/application.yml new file mode 100644 index 0000000000..29e03551c2 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/resources/application.yml @@ -0,0 +1,17 @@ +server.port: 8084 +spring: + application: + name: sidecar +eureka: + instance: + hostname: localhost + leaseRenewalIntervalInSeconds: 1 + leaseExpirationDurationInSeconds: 2 + client: + service-url: + defaultZone: http://127.0.0.1:8761/eureka + healthcheck: + enabled: true +sidecar: + port: 3000 + health-uri: http://localhost:3000/health diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/test/java/com/baeldung/cloud/sidecar/SpringContextTest.java b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/test/java/com/baeldung/cloud/sidecar/SpringContextTest.java new file mode 100644 index 0000000000..66f818d9b8 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/test/java/com/baeldung/cloud/sidecar/SpringContextTest.java @@ -0,0 +1,11 @@ +package com.baeldung.cloud.sidecar; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class SpringContextTest { + @Test + void contextLoads() { + } +}