Spring Cloud Netflix OSS + Netflix Zuul API Gateway + Netflix Eureka Discovery Server + 2 x Microservices + Example

  • In this blog, we will learn to implement load balancer using Netflix Zuul in Spring Boot with Spring Cloud dependencies.
  • In this tutorial we will see, how new instances will be registered under Eureka Server along with Zuul Components (pre, post, route, error filters)
  • Zuul API Gateway can be integrated with other Netflix patterns like Hystrix for fault tolerance and Eureka for service discovery, or use it to manage routing rules, filters, and load balancing across the system.

Zuul Filters: We can add any number of filters for a particular url pattern.We can add any number of filters for a particular url pattern.We can add any number of filters for a particular url pattern.:

e.g.

  • pre-filters – are invoked before the request is routed.
  • post-filters – are invoked after the request has been routed.
  • route-filters – are used to route the request.
  • error-filters – are invoked when an error occurs while handling the request.
Table Of Contents

Zuul API Gateway Advantages

  • Provides an easier interface to clients, by providing an abstraction to the external world.
  • Can be used to prevent exposing the internal microservices structure to clients.
  • Allows refactoring of microservices without forcing the clients to refactor the consuming logic.
  • Can centralize activities like security, monitoring, rate limiting, etc.

Zuul API Gateway Disadvantages

  • It could become a single point of failure if the proper measures are not taken to make it highly available.

Application Overview

Here, in this example we have two microservices applicaions (student and skillstechnologies) having 3 Rest APIs. These microservies are registered with Netflix Eureka Server. Client’s traffic/request being routed/balanced/monitored by Netflix Zuul API gateway.

Application Overview

Technology Stack

Java 8
Maven 3.5.0
Spring Boot 2.1.2.RELEASE
Eclipse
Netflix Eureka as Service Registry Server
Netflix Zuul API Gateway as Server Side Load balancer
2 Microservices (student & skillstechnologies)

Application Setup

spring-boot-zuul-gateway-proxy 1 node (localhost:8989)
spring-boot-zuul-gateway-proxy-eureka-server 1 node (localhost:9090)
spring-boot-zuul-gateway-proxy-student-service 1 node (localhost:8930)
spring-boot-zuul-gateway-proxy-skillstechnologies-service 1 node (localhost:8940)
Application Setup

Microservice: spring-boot-zuul-gateway-proxy-student-service

In this microservice two Rest APIs have been exposed for fetching the student details.

Microservice: Application Structure

Microservice: Maven File (pom.xml)

Maven file pom.xml would be looked like as below

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>spring-boot-zuul-gateway-proxy-student-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring-boot-zuul-gateway-proxy-student-service</name>
	<description>Project for Spring Boot Student Service</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
	</properties>

	<dependencies>
	    <dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-rest</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

Microservice: Applcation Configuration (application.yaml)

Application properties file will be looked like as below.

#Name of the application
spring:
  application:
    name: student

#Eureka server url for registering
#This is eureka client
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://localhost:9090/eureka/

instance:
  hostname: localhost
server:
  port: 8930

Microservice: RestController (StudentServiceApp.java)

Two Rest APIs /echoStudentName/ & /getStudentDetails/ exposed for returning the success response to Zuul API Gateway.

package com.the.basic.tech.info.studentinfoservice;

import java.util.Date;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class StudentServiceApp {

	@RequestMapping(value = "/echoStudentName/{name}")
	public String echoStudentName(@PathVariable(name = "name") String name) {
		return "Hello  " + name + " Responsed on : " + new Date();
	}

	@RequestMapping(value = "/getStudentDetails/{name}")
	public Student getStudentDetails(@PathVariable(name = "name") String name) {
		return new Student(name, "Northridge, CA", "MBA", "Block-E", "California State University");
	}

	public static void main(String[] args) {
		SpringApplication.run(StudentServiceApp.class, args);
	}
}

class Student {
	String name;
	String address;
	String cls;
	String university;
	String block;	

	public Student(String name, String address, String cls, String block, String university) {
		super();
		this.name = name;
		this.address = address;
		this.cls = cls;
		this.block = block;
		this.university = university;
	}

	public String getName() {
		return name;
	}

	public String getAddress() {
		return address;
	}

	public String getCls() {
		return cls;
	}
	public String getUniversity() {
		return university;
	}

	public String getBlock() {
		return block;
	}
}

Microservice: spring-boot-zuul-gateway-proxy-skillstechnologies-service

In this microservice a Rest APIs (/getSkills) has been exposed for fetching the student’s skills technologies details.


Microservice: Application Structure


Microservice: Maven File (pom.xml)

Maven file pom.xml would be looked like as below

?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>spring-boot-zuul-gateway-proxy-skillstechnologies-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-boot-zuul-gateway-proxy-skillstechnologies-service</name>
	<description>Skills Technologies Detail Microservice</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>
       <dependencies>
        <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
        <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Greenwich.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>
</project>


Microservice: Applcation Configuration (application.yaml)

Application properties file will be looked like as below.

#Name of the application
spring:
  application:
    name: skillTechnologiesService

#Eureka server url for registering
#This is eureka client
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://localhost:9090/eureka/

instance:
  hostname: localhost
server:
  port: 8940


Microservice: RestController (SkillsTechnologiesController.java)

package com.the.basic.tech.info.skillstechnologies.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/skillstech")
public class SkillsTechnologiesController {
	private static final Logger logger = LoggerFactory.getLogger(SkillsTechnologiesController.class);

	@GetMapping("/getSkills")
	public String getSkills() {
		logger.info("Inside getSkitlls Method.");
		// we can implement DB layer for fetching below details
		return "Java, J2EE, Spring, Spring-Boot, Microservices, Docker, Kubernetes.";
	}
}

Spring Boot: SpringBootApplication

package com.the.basic.tech.info.skillstechnologies;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SkillsTechnologiesApplication {

	public static void main(String[] args) {
		SpringApplication.run(SkillsTechnologiesApplication.class, args);
	}
}

Microservice: spring-boot-zuul-gateway-proxy-eureka-server

In this microservice we are customizing/configuring the discovery server (spring-boot-zuul-gateway-proxy-eureka-server)

Microservice: Maven File (pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.example</groupId>
	<artifactId>spring-boot-zuul-gateway-proxy-eureka-server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-boot-zuul-gateway-proxy-eureka-server</name>
	<description>Project for Spring Boot Eurka Server</description>
	
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.RC2</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
		</repository>
	</repositories>

</project>

Microservice: Applcation Configuration (application.yaml)

Application properties (application.yml) would be looked like as below

# Configure this Discovery Server
eureka:
  instance:
    hostname: localhost
  client: 
    registerWithEureka: false
    fetchRegistry: false

# HTTP (Tomcat) port
server:
  port: 9090

application.properties for eurka server configurations

spring.application.name=eureka-server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

logging.level.com.netflix.eureka=OFF
logging.level.com.netflix.discovery=OFF
#By default port of Eureka server:8671
#Server port is configured in application.yml.

Spring Boot: SpringBootApplication

We need to enable Eureka Server s.t. @EnableEurekaServer

package com.the.basic.tech.info.eurekadiscoveryserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaDiscoveryServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaDiscoveryServerApplication.class, args);
	}

}

Microservice: spring-boot-zuul-gateway-proxy

Basically it intercepts all the traffic of student and skillstechnologies services and apply series of request filter. Then route to the underlying service and again at the time of response serving, it will apply some response filtering as well. We will see in logs once all the components will be up and running.

Microservice: Application Structure

Microservice: Maven File (pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>spring-boot-zuul-gateway-proxy</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring-boot-zuul-gateway-proxy</name>
	<description>Project for Spring Boot API Gateway Proxy </description>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
		</repository>
	</repositories>
</project>

Microservice: Applcation Configuration (application.yaml)

In this file we are adding dynamic routes for calling the microservices.

#Name of the application
spring:
  application:
    name: ZuulService

#Eureka server url for registering
#This is eureka client
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://localhost:9090/eureka/
#register url to server    

instance:
  hostname: localhost
  
server:
  port: 8989
  
zuul:
  prefix: /portal
  routes:
    studentService:
      path: /studentService/**
      service-id: STUDENT
    skillTechnologiesService:
      path: /skillTechService/**
      service-id: SKILLTECHNOLOGIESSERVICE 

      

Spring Boot: SpringBootApplication

package com.the.basic.tech.info.zuulapigateway.proxy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;

import com.the.basic.tech.info.zuulapigateway.proxy.filters.ErrorFilter;
import com.the.basic.tech.info.zuulapigateway.proxy.filters.PostFilter;
import com.the.basic.tech.info.zuulapigateway.proxy.filters.PreFilter;
import com.the.basic.tech.info.zuulapigateway.proxy.filters.RouteFilter;

@SpringBootApplication
@EnableZuulProxy
public class APIGatwayApplication {

	public static void main(String[] args) {
		SpringApplication.run(APIGatwayApplication.class, args);
	}

	@Bean
	public PreFilter preFilter() {
		return new PreFilter();
	}
	@Bean
	public PostFilter postFilter() {
		return new PostFilter();
	}
	@Bean
	public ErrorFilter errorFilter() {
		return new ErrorFilter();
	}
	@Bean
	public RouteFilter routeFilter() {
		return new RouteFilter();
	}
}

Zuul API Gateway Filter Component (PreFilter)

Note: We can extends ZuulFilter class and override filterType(), filterOrder(), shouldFilter() and run() methods as per requirement.

package com.the.basic.tech.info.zuulapigateway.proxy.filters;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;

public class PreFilter extends ZuulFilter {
	private static final Logger logger = LoggerFactory.getLogger(PreFilter.class);

	@Override
	public String filterType() {
		return "pre";
	}

	@Override
	public int filterOrder() {
		return 1;
	}

	@Override
	public boolean shouldFilter() {
		return true;
	}

	@Override
	public Object run() {
		RequestContext ctx = RequestContext.getCurrentContext();
		HttpServletRequest request = ctx.getRequest();

		logger.info("Request Method: {} and Request URL: {}", request.getMethod(), request.getRequestURL().toString());

		return null;
	}

}

Zuul API Gateway Filter Component (RouteFilter)

package com.the.basic.tech.info.zuulapigateway.proxy.filters;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.zuul.ZuulFilter;

public class RouteFilter extends ZuulFilter {
	private static final Logger logger = LoggerFactory.getLogger(RouteFilter.class);

	@Override
	public String filterType() {
		return "route";
	}

	@Override
	public int filterOrder() {
		return 1;
	}

	@Override
	public boolean shouldFilter() {
		return true;
	}

	@Override
	public Object run() {
		logger.info("Inside Route Filter");

		return null;
	}

}

Zuul API Gateways Filter Component (PostFilter)

package com.the.basic.tech.info.zuulapigateway.proxy.filters;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.zuul.ZuulFilter;

public class PostFilter extends ZuulFilter {
	private static final Logger logger = LoggerFactory.getLogger(PostFilter.class);

  @Override
  public String filterType() {
    return "post";
  }

  @Override
  public int filterOrder() {
    return 1;
  }

  @Override
  public boolean shouldFilter() {
    return true;
  }

  @Override
  public Object run() {
   logger.info("Inside Response Filter");

    return null;
  }
}

Zuul API Gateways Filter Component (ErrorFilter)

package com.the.basic.tech.info.zuulapigateway.proxy.filters;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.zuul.ZuulFilter;

public class ErrorFilter extends ZuulFilter {
	private static final Logger logger = LoggerFactory.getLogger(ErrorFilter.class);

	@Override
	public String filterType() {
		return "error";
	}

	@Override
	public int filterOrder() {
		return 1;
	}

	@Override
	public boolean shouldFilter() {
		return true;
	}

	@Override
	public Object run() {
		logger.info("Inside Route Filter");

		return null;
	}

}

Applications (microservices) Deploy, Run & Test

Start spring-boot-zuul-gateway-proxy-eureka-server application

Start spring-boot-zuul-gateway-proxy-eureka-server application
2021-06-16 22:54:20.869  INFO 30516 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-16 22:54:20.895  INFO 30516 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3882 ms
2021-06-16 22:54:21.169  WARN 30516 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 22:54:21.172  INFO 30516 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 22:54:21.216  INFO 30516 --- [           main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@11bfc5c0
2021-06-16 22:54:23.929  INFO 30516 --- [           main] c.s.j.s.i.a.WebApplicationImpl           : Initiating Jersey application, version 'Jersey: 1.19.1 03/11/2016 02:08 PM'
2021-06-16 22:54:25.182  WARN 30516 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 22:54:25.182  INFO 30516 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 22:54:25.498  INFO 30516 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-16 22:54:28.073  INFO 30516 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2021-06-16 22:54:28.405  INFO 30516 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2021-06-16 22:54:28.701  INFO 30516 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application EUREKA-SERVER with eureka with status UP
2021-06-16 22:54:28.800  INFO 30516 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Setting the eureka configuration..
2021-06-16 22:54:28.833  INFO 30516 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Eureka data center value eureka.datacenter is not set, defaulting to default
2021-06-16 22:54:28.948  INFO 30516 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Eureka environment value eureka.environment is not set, defaulting to test
2021-06-16 22:54:28.998  INFO 30516 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path ''
2021-06-16 22:54:29.021  INFO 30516 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : isAws returned false
2021-06-16 22:54:29.098  INFO 30516 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9090
2021-06-16 22:54:29.123  INFO 30516 --- [           main] b.t.i.e.EurekaDiscoveryServerApplication : Started EurekaDiscoveryServerApplication in 16.837 seconds (JVM running for 28.422)
2021-06-16 22:54:29.128  INFO 30516 --- [      Thread-13] o.s.c.n.e.server.EurekaServerBootstrap   : Initialized server context
2021-06-16 22:54:29.314  INFO 30516 --- [      Thread-13] e.s.EurekaServerInitializerConfiguration : Started Eureka Server

Start spring-boot-zuul-gateway-proxy-student-service application

Start spring-boot-zuul-gateway-proxy-student-service application
2021-06-16 22:59:51.036  INFO 28140 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-16 22:59:51.039  INFO 28140 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 5207 ms
2021-06-16 22:59:52.655  WARN 28140 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 22:59:52.658  INFO 28140 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 22:59:52.677  WARN 28140 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 22:59:52.679  INFO 28140 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 22:59:53.348  INFO 28140 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-16 22:59:58.772  INFO 28140 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2021-06-16 22:59:58.869  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2021-06-16 22:59:59.221  INFO 28140 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2021-06-16 22:59:59.229  INFO 28140 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2021-06-16 22:59:59.899  INFO 28140 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2021-06-16 22:59:59.899  INFO 28140 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2021-06-16 23:00:00.219  INFO 28140 --- [           main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2021-06-16 23:00:01.342  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2021-06-16 23:00:01.774  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : The response status is 200
2021-06-16 23:00:01.774  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2021-06-16 23:00:01.790  INFO 28140 --- [           main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2021-06-16 23:00:01.821  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1623864601806 with initial instances count: 0
2021-06-16 23:00:01.821  INFO 28140 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application STUDENT with eureka with status UP
2021-06-16 23:00:01.821  INFO 28140 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1623864601821, current=UP, previous=STARTING]
2021-06-16 23:00:01.856  INFO 28140 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_STUDENT/LOCALHOST:student:8930: registering service...
2021-06-16 23:00:02.332  INFO 28140 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8930 (http) with context path ''
2021-06-16 23:00:02.343  INFO 28140 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8930
2021-06-16 23:00:02.351  INFO 28140 --- [           main] c.t.b.t.i.s.StudentServiceApp            : Started StudentServiceApp in 25.5 seconds (JVM running for 36.274)
2021-06-16 23:00:02.417  INFO 28140 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_STUDENT/LOCALHOST:student:8930 - registration status: 204
2021-06-16 23:00:31.798  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2021-06-16 23:00:31.798  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2021-06-16 23:00:31.814  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2021-06-16 23:00:31.814  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Application is null : false
2021-06-16 23:00:31.814  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2021-06-16 23:00:31.814  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Application version is -1: false
2021-06-16 23:00:31.814  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2021-06-16 23:00:31.914  INFO 28140 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : The response status is 200

Start spring-boot-zuul-gateway-proxy-skillstechnologies-service application

Start spring-boot-zuul-gateway-proxy-skillstechnologies-service application
2021-06-16 23:05:50.931  INFO 28224 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-16 23:05:50.931  INFO 28224 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3180 ms
2021-06-16 23:05:51.162  WARN 28224 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 23:05:51.167  INFO 28224 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 23:05:51.212  WARN 28224 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 23:05:51.218  INFO 28224 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 23:05:51.622  INFO 28224 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-16 23:05:55.539  INFO 28224 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2021-06-16 23:05:55.663  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2021-06-16 23:05:56.143  INFO 28224 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2021-06-16 23:05:56.144  INFO 28224 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2021-06-16 23:05:56.537  INFO 28224 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2021-06-16 23:05:56.554  INFO 28224 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2021-06-16 23:05:56.937  INFO 28224 --- [           main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2021-06-16 23:05:58.091  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2021-06-16 23:05:58.102  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2021-06-16 23:05:58.103  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2021-06-16 23:05:58.104  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2021-06-16 23:05:58.106  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2021-06-16 23:05:58.107  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2021-06-16 23:05:58.108  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2021-06-16 23:05:58.786  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : The response status is 200
2021-06-16 23:05:58.799  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2021-06-16 23:05:58.807  INFO 28224 --- [           main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2021-06-16 23:05:58.820  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1623864958816 with initial instances count: 1
2021-06-16 23:05:58.825  INFO 28224 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application SKILLTECHNOLOGIESSERVICE with eureka with status UP
2021-06-16 23:05:58.828  INFO 28224 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1623864958828, current=UP, previous=STARTING]
2021-06-16 23:05:58.841  INFO 28224 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SKILLTECHNOLOGIESSERVICE/LOCALHOST:skillTechnologiesService:8940: registering service...
2021-06-16 23:05:59.010  INFO 28224 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SKILLTECHNOLOGIESSERVICE/LOCALHOST:skillTechnologiesService:8940 - registration status: 204
2021-06-16 23:05:59.029  INFO 28224 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8940 (http) with context path ''
2021-06-16 23:05:59.040  INFO 28224 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8940
2021-06-16 23:05:59.049  INFO 28224 --- [           main] .t.b.t.i.s.SkillsTechnologiesApplication : Started SkillsTechnologiesApplication in 16.911 seconds (JVM running for 26.647)

Start spring-boot-zuul-gateway-proxy application

start spring-boot-zuul-gateway-proxy application
2021-06-16 23:10:41.410  INFO 23636 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-16 23:10:41.414  INFO 23636 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 4071 ms
2021-06-16 23:10:41.754  WARN 23636 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 23:10:41.756  INFO 23636 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 23:10:41.788  INFO 23636 --- [           main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@291231cb
2021-06-16 23:10:45.779  WARN 23636 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-06-16 23:10:45.798  INFO 23636 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-06-16 23:10:46.175  INFO 23636 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-16 23:10:48.153  INFO 23636 --- [           main] o.s.c.n.zuul.ZuulFilterInitializer       : Starting filter initializer
2021-06-16 23:10:48.231  INFO 23636 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2021-06-16 23:10:48.745  INFO 23636 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2021-06-16 23:10:49.079  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2021-06-16 23:10:49.571  INFO 23636 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2021-06-16 23:10:49.582  INFO 23636 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2021-06-16 23:10:50.113  INFO 23636 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2021-06-16 23:10:50.119  INFO 23636 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2021-06-16 23:10:50.497  INFO 23636 --- [           main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2021-06-16 23:10:51.685  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2021-06-16 23:10:51.685  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2021-06-16 23:10:51.701  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2021-06-16 23:10:51.701  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2021-06-16 23:10:51.701  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2021-06-16 23:10:51.716  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2021-06-16 23:10:51.716  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2021-06-16 23:10:52.005  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : The response status is 200
2021-06-16 23:10:52.005  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2021-06-16 23:10:52.021  INFO 23636 --- [           main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2021-06-16 23:10:52.021  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1623865252021 with initial instances count: 2
2021-06-16 23:10:52.021  INFO 23636 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application ZUULSERVICE with eureka with status UP
2021-06-16 23:10:52.021  INFO 23636 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1623865252021, current=UP, previous=STARTING]
2021-06-16 23:10:52.037  INFO 23636 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ZUULSERVICE/LOCALHOST:ZuulService:8989: registering service...
2021-06-16 23:10:52.150  INFO 23636 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ZUULSERVICE/LOCALHOST:ZuulService:8989 - registration status: 204
2021-06-16 23:10:52.207  INFO 23636 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8989 (http) with context path ''
2021-06-16 23:10:52.237  INFO 23636 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8989
2021-06-16 23:10:52.248  INFO 23636 --- [           main] c.t.b.t.i.z.proxy.APIGatwayApplication   : Started APIGatwayApplication in 19.675 seconds (JVM running for 33.872)

Test /student/echoStudentName microservice

http://localhost:8989/portal/student/echoStudentName/The%20Basic%20Tech%20Info

Test /student/getStudentDetails microservice

http://localhost:8989/portal/student/getStudentDetails/The%20Basic%20Tech%20Info

2021-06-16 23:13:42.867  INFO 23636 --- [erListUpdater-0] c.netflix.config.ChainedDynamicProperty  : Flipping property: student.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-06-16 23:13:43.679  INFO 23636 --- [nio-8989-exec-4] c.t.b.t.i.z.proxy.filters.PostFilter     : Inside Response Filter
2021-06-16 23:13:59.765  INFO 23636 --- [nio-8989-exec-7] c.t.b.t.i.z.proxy.filters.PreFilter      : Request Method: GET and Request URL: http://localhost:8989/portal/student/echoStudentName/The%20Basic%20Tech%20Info
2021-06-16 23:13:59.770  INFO 23636 --- [nio-8989-exec-7] c.t.b.t.i.z.proxy.filters.RouteFilter    : Inside Route Filter
2021-06-16 23:13:59.796  INFO 23636 --- [nio-8989-exec-7] c.t.b.t.i.z.proxy.filters.PostFilter     : Inside Response Filter
2021-06-16 23:15:51.746  INFO 23636 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2021-06-16 23:18:36.550  INFO 23636 --- [nio-8989-exec-1] c.t.b.t.i.z.proxy.filters.PreFilter      : Request Method: GET and Request URL: http://localhost:8989/portal/student/echoStudentName/The%20Basic%20Tech%20Info
2021-06-16 23:18:36.555  INFO 23636 --- [nio-8989-exec-1] c.t.b.t.i.z.proxy.filters.RouteFilter    : Inside Route Filter
2021-06-16 23:18:36.596  INFO 23636 --- [nio-8989-exec-1] c.t.b.t.i.z.proxy.filters.PostFilter     : Inside Response Filter
2021-06-16 23:19:30.072  INFO 23636 --- [nio-8989-exec-6] c.t.b.t.i.z.proxy.filters.PreFilter      : Request Method: GET and Request URL: http://localhost:8989/portal/student/getStudentDetails/The%20Basic%20Tech%20Info
2021-06-16 23:19:30.075  INFO 23636 --- [nio-8989-exec-6] c.t.b.t.i.z.proxy.filters.RouteFilter    : Inside Route Filter
2021-06-16 23:19:31.059  INFO 23636 --- [nio-8989-exec-6] c.t.b.t.i.z.proxy.filters.PostFilter     : Inside Response Filter
2021-06-16 23:20:51.763  INFO 23636 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration

Test /skillTechService/skillstech/getSkills microservice

http://localhost:8989/portal/skillTechService/skillstech/getSkills

2021-06-16 23:19:30.075  INFO 23636 --- [nio-8989-exec-6] c.t.b.t.i.z.proxy.filters.RouteFilter    : Inside Route Filter
2021-06-16 23:19:31.059  INFO 23636 --- [nio-8989-exec-6] c.t.b.t.i.z.proxy.filters.PostFilter     : Inside Response Filter
2021-06-16 23:20:51.763  INFO 23636 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2021-06-16 23:22:39.155  INFO 23636 --- [nio-8989-exec-1] c.t.b.t.i.z.proxy.filters.PreFilter      : Request Method: GET and Request URL: http://localhost:8989/portal/skillTechService/skillstech/getSkills
2021-06-16 23:22:39.169  INFO 23636 --- [nio-8989-exec-1] c.t.b.t.i.z.proxy.filters.RouteFilter    : Inside Route Filter
2021-06-16 23:22:39.324  INFO 23636 --- [nio-8989-exec-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: SKILLTECHNOLOGIESSERVICE.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-06-16 23:22:39.438  INFO 23636 --- [nio-8989-exec-1] c.n.u.concurrent.ShutdownEnabledTimer    : Shutdown hook installed for: NFLoadBalancer-PingTimer-SKILLTECHNOLOGIESSERVICE
2021-06-16 23:22:39.445  INFO 23636 --- [nio-8989-exec-1] c.netflix.loadbalancer.BaseLoadBalancer  : Client: SKILLTECHNOLOGIESSERVICE instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=SKILLTECHNOLOGIESSERVICE,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2021-06-16 23:22:39.453  INFO 23636 --- [nio-8989-exec-1] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2021-06-16 23:22:39.471  INFO 23636 --- [nio-8989-exec-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: SKILLTECHNOLOGIESSERVICE.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-06-16 23:22:39.481  INFO 23636 --- [nio-8989-exec-1] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client SKILLTECHNOLOGIESSERVICE initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=SKILLTECHNOLOGIESSERVICE,current list of Servers=[LOCALHOST:8940],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone;       Instance count:1;       Active connections count: 0;    Circuit breaker tripped count: 0;       Active connections per server: 0.0;]
},Server stats: [[Server:LOCALHOST:8940;       Zone:defaultZone;       Total Requests:0;       Successive connection failure:0;        Total blackout seconds:0;   Last connection made:Thu Jan 01 05:30:00 IST 1970;      First connection made: Thu Jan 01 05:30:00 IST 1970;    Active Connections:0;   total failure count in last (1000) msecs:0; average resp time:0.0;  90 percentile resp time:0.0;    95 percentile resp time:0.0;    min resp time:0.0;      max resp time:0.0;      stddev resp time:0.0]
]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@1467d23d
2021-06-16 23:22:40.070  INFO 23636 --- [nio-8989-exec-1] c.t.b.t.i.z.proxy.filters.PostFilter     : Inside Response Filter
2021-06-16 23:22:40.471  INFO 23636 --- [erListUpdater-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: SKILLTECHNOLOGIESSERVICE.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

Download Source Code (Attached)

Happy Learning :).