You need to sign in or sign up before continuing.
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