Commit dc555be0 authored by Ali Saeed's avatar Ali Saeed

Added Resilience (Circuit Breaker) for API Gateway with Monitoring (Prometheus, Grafana)

parent 1d5f5f4d
......@@ -15,26 +15,10 @@ spring:
cloud:
gateway:
routes:
- id: invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-damascus-zone
uri: lb://users-service
predicates:
- Path=/users/**
- id: invoicing-service-latakia-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-latakia-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-latakia-zone
uri: lb://users-service
predicates:
......
......@@ -15,26 +15,10 @@ spring:
cloud:
gateway:
routes:
- id: invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-damascus-zone
uri: lb://users-service
predicates:
- Path=/users/**
- id: invoicing-service-latakia-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-latakia-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-latakia-zone
uri: lb://users-service
predicates:
......
......@@ -37,6 +37,15 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
......
package org.example.resources;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
public class FallbackMethod {
@RequestMapping("users-fallback")
public String getUsersFallback(){
return "Users Service is temporary unavailable, Please Try Again Later";
}
@RequestMapping("invoicing-fallback")
public String getInvoicingFallback(){
return "Invoicing Service is temporary unavailable, Please Try Again Later";
}
}
server:
port: 9090
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
registerWithEureka: false
preferSameZoneEureka: true
instance:
metadataMap:
zone: damascus
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
- id: invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-damascus-zone
uri: lb://users-service
predicates:
- Path=/users/**
- id: invoicing-service-latakia-zone
- id: invoicing-service
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-latakia-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-latakia-zone
filters:
- name: CircuitBreaker
args:
name: invoicingCircuitBreaker
fallbackUri: forward:/invoicing-fallback
- id: users-service
uri: lb://users-service
predicates:
- Path=/users/**
filters:
- name: CircuitBreaker
args:
name: usersCircuitBreaker
fallbackUri: forward:/users-fallback
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
registerWithEureka: true
fetch-registry: true
preferSameZoneEureka: true
instance:
metadataMap:
zone: damascus
management:
health:
circuitbreakers:
enabled: true
endpoints:
web:
exposure:
include: health,prometheus
endpoint:
health:
show-details: always
resilience4j:
circuitbreaker:
instances:
usersCircuitBreaker:
registerHealthIndicator: true
eventConsumerBufferSize: 10
failureRateThreshold: 80
minimumNumberOfCalls: 10
automaticTransitionFromOpenToHalfOpenEnabled: true
waitDurationInOpenState: 10s
permittedNumberOfCallsInHalfOpenState: 3
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
server:
port: 9090
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
registerWithEureka: false
preferSameZoneEureka: true
instance:
metadataMap:
zone: damascus
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
- id: invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-damascus-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-damascus-zone
uri: lb://users-service
predicates:
- Path=/users/**
- id: invoicing-service-latakia-zone
- id: invoicing-service
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: replica-invoicing-service-latakia-zone
uri: lb://invoicing-service
predicates:
- Path=/invoices/**
- id: users-service-latakia-zone
filters:
- name: CircuitBreaker
args:
name: invoicingCircuitBreaker
fallbackUri: forward:/invoicing-fallback
- id: users-service
uri: lb://users-service
predicates:
- Path=/users/**
filters:
- name: CircuitBreaker
args:
name: usersCircuitBreaker
fallbackUri: forward:/users-fallback
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
registerWithEureka: true
fetch-registry: true
preferSameZoneEureka: true
instance:
metadataMap:
zone: damascus
management:
health:
circuitbreakers:
enabled: true
endpoints:
web:
exposure:
include: health,prometheus
endpoint:
health:
show-details: always
resilience4j:
circuitbreaker:
instances:
usersCircuitBreaker:
registerHealthIndicator: true
eventConsumerBufferSize: 10
failureRateThreshold: 80
minimumNumberOfCalls: 10
automaticTransitionFromOpenToHalfOpenEnabled: true
waitDurationInOpenState: 10s
permittedNumberOfCallsInHalfOpenState: 3
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
volumes:
- ./docker/prometheus-desktop.yml:/etc/prometheus/prometheus.yml
ports:
- "9092:9090"
networks:
- net
grafana:
image: grafana/grafana
container_name: grafana
env_file:
- ./docker/grafana.env
ports:
- "3000:3000"
networks:
- net
networks:
net:
\ No newline at end of file
This diff is collapsed.
# [server]
# GF_SERVER_DOMAIN=localhost
# GF_SERVER_HTTP_PORT=3000
# GF_SERVER_PROTOCOL=http
\ No newline at end of file
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'resilience4j-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'Cloud-Gateway'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
metrics_path: /actuator/prometheus
static_configs:
# Use the service name (see docker-compose-desktop.yml) instead of localhost
- targets: ['host.docker.internal:9090']
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -315,3 +315,42 @@ com.netflix.discovery.shared.transport.TransportException: Cannot execute reques
2024-04-28 13:30:17.516 [main] INFO o.e.InvoicingServiceZone2Application - Started InvoicingServiceZone2Application in 15.323 seconds (process running for 16.87)
2024-04-28 13:33:38.275 [http-nio-8085-exec-1] INFO o.example.resources.InvoiceResource - mark the invoice which has 2 invoiceId status as true (paid)
2024-04-28 13:44:59.320 [http-nio-8085-exec-4] INFO o.example.resources.InvoiceResource - mark the invoice which has 2 invoiceId status as true (paid)
2024-05-02 15:24:46.616 [main] INFO o.e.InvoicingServiceZone2Application - Starting InvoicingServiceZone2Application using Java 17 with PID 11344 (D:\Second Semester\Advanced DS\Practical\New folder\micro-services\invoicing-service-zone-2\target\classes started by dell in D:\Second Semester\Advanced DS\Practical\New folder\micro-services)
2024-05-02 15:24:46.637 [main] DEBUG o.e.InvoicingServiceZone2Application - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-05-02 15:24:46.640 [main] INFO o.e.InvoicingServiceZone2Application - No active profile set, falling back to 1 default profile: "default"
2024-05-02 15:25:02.126 [main] INFO o.e.InvoicingServiceZone2Application - Started InvoicingServiceZone2Application in 18.986 seconds (process running for 21.584)
2024-05-02 15:33:56.259 [http-nio-8085-exec-3] INFO o.example.resources.InvoiceResource - mark the invoice which has 2 invoiceId status as true (paid)
2024-05-02 15:54:21.495 [SpringApplicationShutdownHook] ERROR c.netflix.discovery.DiscoveryClient - DiscoveryClient_INVOICING-SERVICE/localhost:invoicing-service:8085 - de-registration failedCannot execute request on any known server
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74)
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71)
at com.netflix.discovery.DiscoveryClient.unregister(DiscoveryClient.java:916)
at com.netflix.discovery.DiscoveryClient.shutdown(DiscoveryClient.java:892)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:382)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:212)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:191)
at org.springframework.beans.factory.support.DisposableBeanAdapter.run(DisposableBeanAdapter.java:184)
at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.destroy(GenericScope.java:389)
at org.springframework.cloud.context.scope.GenericScope.destroy(GenericScope.java:136)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1177)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1170)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1082)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1051)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:173)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1001)
at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:139)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:108)
at java.base/java.lang.Thread.run(Thread.java:833)
......@@ -353,3 +353,43 @@ java.lang.StringIndexOutOfBoundsException: begin -1, end 0, length 58
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)
2024-05-02 15:25:17.249 [main] INFO o.e.ReplicaInvoicingServiceZone2Application - Starting ReplicaInvoicingServiceZone2Application using Java 17 with PID 13724 (D:\Second Semester\Advanced DS\Practical\New folder\micro-services\replica-invoicing-service-zone-2\target\classes started by dell in D:\Second Semester\Advanced DS\Practical\New folder\micro-services)
2024-05-02 15:25:17.256 [main] DEBUG o.e.ReplicaInvoicingServiceZone2Application - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-05-02 15:25:17.259 [main] INFO o.e.ReplicaInvoicingServiceZone2Application - No active profile set, falling back to 1 default profile: "default"
2024-05-02 15:25:31.687 [main] INFO o.e.ReplicaInvoicingServiceZone2Application - Started ReplicaInvoicingServiceZone2Application in 17.332 seconds (process running for 19.63)
2024-05-02 15:31:48.263 [http-nio-8084-exec-2] INFO o.example.resources.InvoiceResource - mark the invoice which has 2 invoiceId status as true (paid)
2024-05-02 15:35:37.949 [http-nio-8084-exec-3] INFO o.example.resources.InvoiceResource - Got all unpaid invoices
2024-05-02 15:54:18.614 [SpringApplicationShutdownHook] ERROR c.netflix.discovery.DiscoveryClient - DiscoveryClient_INVOICING-SERVICE/localhost:invoicing-service:8084 - de-registration failedCannot execute request on any known server
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74)
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71)
at com.netflix.discovery.DiscoveryClient.unregister(DiscoveryClient.java:916)
at com.netflix.discovery.DiscoveryClient.shutdown(DiscoveryClient.java:892)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:382)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:212)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:191)
at org.springframework.beans.factory.support.DisposableBeanAdapter.run(DisposableBeanAdapter.java:184)
at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.destroy(GenericScope.java:389)
at org.springframework.cloud.context.scope.GenericScope.destroy(GenericScope.java:136)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1177)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1170)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1082)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1051)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:173)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1001)
at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:139)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:108)
at java.base/java.lang.Thread.run(Thread.java:833)
......@@ -503,3 +503,43 @@ org.springframework.web.client.HttpServerErrorException$InternalServerError: 500
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)
2024-04-28 13:47:00.036 [http-nio-8083-exec-10] INFO org.example.resources.UserResource - paid invoice with 2 invoiceId for user has 1 userId
2024-05-02 15:25:45.348 [main] INFO o.e.UsersServiceZone2Application - Starting UsersServiceZone2Application using Java 17 with PID 9848 (D:\Second Semester\Advanced DS\Practical\New folder\micro-services\users-service-zone-2\target\classes started by dell in D:\Second Semester\Advanced DS\Practical\New folder\micro-services)
2024-05-02 15:25:45.357 [main] DEBUG o.e.UsersServiceZone2Application - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-05-02 15:25:45.418 [main] INFO o.e.UsersServiceZone2Application - No active profile set, falling back to 1 default profile: "default"
2024-05-02 15:25:56.764 [main] INFO o.e.UsersServiceZone2Application - Started UsersServiceZone2Application in 14.056 seconds (process running for 16.931)
2024-05-02 15:31:48.344 [http-nio-8083-exec-1] INFO org.example.resources.UserResource - paid invoice with 2 invoiceId for user has 1 userId
2024-05-02 15:33:56.275 [http-nio-8083-exec-3] INFO org.example.resources.UserResource - paid invoice with 2 invoiceId for user has 1 userId
2024-05-02 15:54:22.498 [SpringApplicationShutdownHook] ERROR c.netflix.discovery.DiscoveryClient - DiscoveryClient_USERS-SERVICE/localhost:users-service:8083 - de-registration failedCannot execute request on any known server
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$2.execute(EurekaHttpClientDecorator.java:74)
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.cancel(EurekaHttpClientDecorator.java:71)
at com.netflix.discovery.DiscoveryClient.unregister(DiscoveryClient.java:916)
at com.netflix.discovery.DiscoveryClient.shutdown(DiscoveryClient.java:892)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:382)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:212)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:191)
at org.springframework.beans.factory.support.DisposableBeanAdapter.run(DisposableBeanAdapter.java:184)
at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.destroy(GenericScope.java:389)
at org.springframework.cloud.context.scope.GenericScope.destroy(GenericScope.java:136)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1177)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1170)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1082)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1051)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:173)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1001)
at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:139)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:108)
at java.base/java.lang.Thread.run(Thread.java:833)
......@@ -12052,3 +12052,15 @@ java.lang.IllegalStateException: Client instance has been closed.
2024-04-28 13:28:57.060 [main] DEBUG o.e.ServiceDiscoveryApplication - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-04-28 13:28:57.063 [main] INFO o.e.ServiceDiscoveryApplication - No active profile set, falling back to 1 default profile: "default"
2024-04-28 13:29:17.388 [main] INFO o.e.ServiceDiscoveryApplication - Started ServiceDiscoveryApplication in 23.264 seconds (process running for 25.945)
2024-05-02 15:23:32.168 [main] INFO o.e.ServiceDiscoveryApplication - Starting ServiceDiscoveryApplication using Java 17 with PID 10488 (D:\Second Semester\Advanced DS\Practical\New folder\micro-services\service-discovery\target\classes started by dell in D:\Second Semester\Advanced DS\Practical\New folder\micro-services)
2024-05-02 15:23:32.176 [main] DEBUG o.e.ServiceDiscoveryApplication - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-05-02 15:23:32.179 [main] INFO o.e.ServiceDiscoveryApplication - No active profile set, falling back to 1 default profile: "default"
2024-05-02 15:23:50.520 [main] INFO o.e.ServiceDiscoveryApplication - Started ServiceDiscoveryApplication in 20.994 seconds (process running for 23.389)
2024-05-02 17:26:05.631 [main] INFO o.e.ServiceDiscoveryApplication - Starting ServiceDiscoveryApplication using Java 17 with PID 16264 (D:\Second Semester\Advanced DS\Practical\New folder\micro-services\service-discovery\target\classes started by dell in D:\Second Semester\Advanced DS\Practical\New folder\micro-services)
2024-05-02 17:26:05.643 [main] DEBUG o.e.ServiceDiscoveryApplication - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-05-02 17:26:05.645 [main] INFO o.e.ServiceDiscoveryApplication - No active profile set, falling back to 1 default profile: "default"
2024-05-02 17:26:22.862 [main] INFO o.e.ServiceDiscoveryApplication - Started ServiceDiscoveryApplication in 20.672 seconds (process running for 23.109)
2024-05-02 18:51:46.934 [main] INFO o.e.ServiceDiscoveryApplication - Starting ServiceDiscoveryApplication using Java 17 with PID 16232 (D:\Second Semester\Advanced DS\Practical\New folder\micro-services\service-discovery\target\classes started by dell in D:\Second Semester\Advanced DS\Practical\New folder\micro-services)
2024-05-02 18:51:46.940 [main] DEBUG o.e.ServiceDiscoveryApplication - Running with Spring Boot v3.0.1, Spring v6.0.3
2024-05-02 18:51:46.946 [main] INFO o.e.ServiceDiscoveryApplication - No active profile set, falling back to 1 default profile: "default"
2024-05-02 18:52:00.514 [main] INFO o.e.ServiceDiscoveryApplication - Started ServiceDiscoveryApplication in 16.17 seconds (process running for 17.726)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment