Coder Social home page Coder Social logo

rajadilipkolli / spring-boot-microservices-series-v2 Goto Github PK

View Code? Open in Web Editor NEW
28.0 5.0 12.0 3.28 MB

Spring boot cloud series with latest technologies

License: MIT License

Java 91.74% Dockerfile 0.12% Shell 3.44% CSS 0.01% JavaScript 1.03% HTML 3.67%
spring-boot spring-cloud gateway namingserver configserver docker docker-compose kafka microservices liquibase

spring-boot-microservices-series-v2's Introduction

Open in Gitpod

SonarCloud Bugs Coverage Lines of Code

Problem Statement

The Retail Business management system is a comprehensive platform for managing the sales and inventory of a retails business. It includes several different components that work together to provide a seamless experience for both the business and the customer.It includes four main components:

  1. Catalog: The catalog component allows the business to create and maintain a list of products that are available for sale on their website. This includes details such as product descriptions, images, and pricing.

  2. Inventory: The inventory component is responsible for tracking the availability of products and ensuring that orders can be fulfilled. It includes features such as inventory tracking and restocking alerts.

  3. Order: The order component allows customers to place orders for products, and includes features such as order tracking and confirmation emails.

  4. Payment: The payment service component handles the processing of payments and maintains customer information. This includes the ability to store payment details for future purchases and to handle transactions securely.

The process flow begins with an admin creating a catalog of products to sell on the website. This catalog is managed by an operator, who is responsible for updating the inventory levels of the products.

The end user, or customer, is then able to register their profile and payment details with a payment service. Once the customer places an order, the system checks to see if the customer has the necessary funds and is able to make the purchase. If the purchase is approved, the system reserves the amount of the purchase and checks to see if the product is available in the inventory. If the product is available, it is reserved for the customer.

Once both the payment and product availability checks have been successful, the order processing begins. The status of the order is changed and events are sent to both the payment and inventory systems to deduct the amount from the customer's account and reduce the inventory levels.

Overall, the Retail Business management system project provides a comprehensive solution for managing the sales and inventory of a business, with a focus on ensuring a smooth and seamless experience for both the business and the customer.

Technical Concepts and requirement

API Gateway: An API Gateway is a microservice that sits between external clients and the various microservices that make up an application. It acts as a reverse proxy, routing requests from clients to the appropriate microservice and returning the response back to the client. This allows for a single point of entry into the application, making it easier to manage and scale.

Service Registry: A Service Registry is a microservice that maintains a list of all the other microservices in an application. It allows for service discovery, allowing microservices to find and communicate with each other without needing to know their specific locations. This is particularly useful in environments where microservices are frequently scaled up or down, as the Service Registry ensures that all microservices are aware of the current state of the system.

Config Server: A Config Server is a microservice that stores configuration information for an application. It allows for centralized management of configuration data, which can be accessed by other microservices as needed. This helps to ensure that all microservices are using the same configuration data, and makes it easier to update configuration information as needed.

Observability in a microservices architecture involves the ability to understand the current state and behavior of the system, including any issues or errors that may occur. This can be achieved through the use of tools such as distributed tracing, which allows for the tracking of requests and responses as they pass through the system.

Microservices centralized logging refers to the practice of collecting and storing log data from all microservices in a single location, typically a centralized log management system. This allows for easier tracking and analysis of log data, as it is all stored in a single location rather than spread across multiple microservices.

Monitoring in a microservices architecture involves tracking the performance and health of individual microservices and their interactions with other microservices. This can be done using tools such as application performance monitoring (APM) or infrastructure monitoring tools.

To implement centralized logging, monitoring, and observability in a microservices architecture, there are several technical requirements that must be met. These include:

  1. Integration with log management and monitoring tools: The microservices must be able to send log data and performance metrics to the centralized log management system and monitoring tools.

  2. Support for distributed tracing: The microservices must support distributed tracing to allow for the tracking of requests and responses as they pass through the system.

  3. Security and privacy considerations: The centralized logging, monitoring, and observability systems must be secure and protect sensitive data.

  4. Scalability: The centralized logging, monitoring, and observability systems must be able to handle the large volume of data generated by a microservices architecture.

  5. Integration with existing systems: The centralized logging, monitoring, and observability systems must be able to integrate with existing systems and tools, such as monitoring and alerting systems.

Initial Code generated using springboot generator where I have recently joined as co-commiter to the project

Local SetUp and running using docker

To run all services in local, first build all services using command or check individual service ReadMe.md for instructions to start.

./mvnw clean spotless:apply spring-boot:build-image -DskipTests

Once above step is completed, start solution in docker using

docker compose up

To start silently use docker compose -d up , which starts in detached mode and can observe logs using docker compose logs -f

To test end to end run the below script from project root directory

HOST=localhost PORT=8765 ./test-em-all.sh start stop

Starting infrastructure

docker compose up zipkin-server postgresql pgadmin4 kafka config-server naming-server

URLs to access pieces of software

Swagger URLs for accessing Services

Service Name URL Gateway URL
api gateway http://localhost:8765/swagger-ui.html http://localhost:8765/swagger-ui.html
catalog service http://localhost:18080/catalog-service/swagger-ui.html http://localhost:8765/catalog-service/swagger-ui.html
inventory service http://localhost:18181/inventory-service/swagger-ui.html http://localhost:8765/inventory-service/swagger-ui.html
order service http://localhost:18282/order-service/swagger-ui.html http://localhost:8765/order-service/swagger-ui.html
payment service http://localhost:18085/payment-service/swagger-ui.html http://localhost:8765/payment-service/swagger-ui.html

Now, Gateway Swagger serves as an aggregate for multiple services, allowing users to access these services through the top dropdown menu as shown.

Alert manager and Prometheus

docker-compose-tools.yml(contains config for prometheus and alertmanager)

---
title: How alertManager works
---
flowchart TD
prometheus.yml --> alert-rules.yml --> alert-manager.yml

Each microservice in your Spring Boot project generates and exposes metrics related to its health and performance.

Step 1: Prometheus periodically pulls metrics from the microservices. Metrics are collected from each microservice through HTTP endpoints exposed by them.

Step 2: Prometheus evaluates the collected metrics against the alerting rules defined in alert-rules.yml. Rules include conditions like server uptime, CPU usage.

Step 3: If a rule condition is met (e.g., a server is down for more than 1 minute or high CPU usage is detected), Prometheus triggers an alert.

Step 4: Alert Manager receives the alerts from Prometheus and routes alerts based on configurations and sends notifications.

You can monitor the status of alerts by accessing the Prometheus web UI at localhost:9090. The UI provides information about triggered alerts and their severity.

Liquibase Formats

  • Liquibase will support various formats and these are implemented in below services
Liquibase Formats Service
XML order-service, payment-service
YAML catalog-service
JSON inventory-service
SQL

Useful Docker Commands

Clean up everything using

docker system prune -a -f --volumes

Claim unused volumes

docker volume prune

find Running container

docker container ls

find logs of running container

docker compose logs -f

follow logs of running container from last few lines only

docker compose -f docker-compose-tools.yml logs --tail=500 -f

Kill Application running on port

  • find process Id running on port
netstat -ano | findstr :18080
  • Killing application using cmd
taskkill /PID <type PID here> /f

References

Projects unable to convert to native Image OOTB

  • config-server (Due to presence of Netty)
  • api-gateway (Due to presence of Netty)

Breaking Changes in 3.0

  • Migration to jakarta namespace from javax

  • Spring Cloud Seluth is deprecated in favor of Micrometer

  • With New Observability we cant use Rabbit as sender type and use asynchronous communication

  • Fluent-bit only supports AMD architecture hence swithced to pormtail. If you want to use fluent-bit please ensure grafana is started first and then other services are started.

  • JOOQ expects Transactional annotation on repository though we have it on Service

Tips

then using jsonPath in a mvc test for asserting BigDecimal use jsonPath("$.totalPrice").value(closeTo(100.00, 0.01)) instead of jsonPath("$.totalPrice").value(100.00))

spring-boot-microservices-series-v2's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar manepullavamsi avatar mounikachindam3 avatar rajadileepkolli avatar rajadilipkolli avatar rdckolli avatar renovate-bot avatar renovate[bot] avatar siddharthjain-02 avatar stack-file[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

spring-boot-microservices-series-v2's Issues

feat: Remove lombok

Lombok is using deprecated and unsafe java internals. which is acting as an obstacle while upgrading to any latest version of java.

While Creating Order, it should have all 3 values of orderItem as mandatory

Currently for creating a new Order we use below code,

public record OrderRequest(
        @Positive(message = "CustomerId should be positive") Long customerId,
        @NotEmpty(message = "Order without items not valid") List<OrderItemRequest> items) {}

we have validation set up at the Order (parent) level. However, we need to extend this validation to the OrderItem level (child) to ensure that all key attributes are properly validated.

Specifically, we need to enforce the following validation rules for OrderItemRequest:

  • Quantity should not be zero.
  • Price should not be zero.
  • A valid product code must be provided.

To implement this enhancement, the following tasks need to be completed:

  1. Modify OrderItemRequest.java : Add validation logic to the OrderItemRequest class to enforce the above-mentioned rules.
  2. Create a New JUnit : Develop a new test case in the OrderControllerIT.java class to demonstrate that the extended validation at the child level is functioning correctly. This test case should cover various scenarios to ensure thorough testing.

Implement OutBox Pattern

While saving anything once we save data in db and publish it in queue, which can lead to many problems, like db connection hanging when queue is down.

Upgrade to Java 17

  • change build distribution and versions
  • change java version in maven project

expose endpoint to fetch orders by customer Id

As a customer, I would like to see the status of the orders created.

Technical Implementation:

In Order-service microservice we have order details, hence an endpoint should be exposed here which queries by customerId.
Change the response of the Object to include created Date.
Have a paginated API to give response.

Once this is done, we should expose endpoint in payment-service to call this endpoints

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

devcontainer
.devcontainer/devcontainer.json
  • mcr.microsoft.com/devcontainers/java 1-21-bullseye
  • ghcr.io/devcontainers/features/java 1
  • ghcr.io/devcontainers/features/docker-in-docker 2
docker-compose
api-gateway/docker-compose.yml
  • redis 7.2.5-alpine
  • dockertmt/mmv2-service-registry-17 0.0.1-SNAPSHOT
  • dockertmt/mmv2-config-server-17 0.0.1-SNAPSHOT
catalog-service/docker/docker-compose-app.yml
catalog-service/docker/docker-compose.yml
  • postgres 16-alpine
  • apache/kafka 3.7.0
  • dockertmt/mmv2-config-server-17 0.0.1-SNAPSHOT
  • dockertmt/mmv2-service-registry-17 0.0.1-SNAPSHOT
  • dockertmt/mmv2-inventory-service 0.0.1-SNAPSHOT
deployment/docker-compose-tools.yml
  • postgres 16-alpine
  • redis 7.2.5-alpine
  • apache/kafka 3.7.0
  • quay.io/keycloak/keycloak 25.0.0
  • dockertmt/mmv2-config-server-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-service-registry-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-api-gateway 0.0.1-SNAPSHOT
  • dockertmt/mmv2-catalog-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-inventory-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-order-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-payment-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-retail-store-webapp 0.0.1-SNAPSHOT
  • grafana/grafana 11.0.0
  • grafana/loki 3.0.0
  • grafana/promtail 3.0.0
  • prom/prometheus v2.53.0
  • grafana/tempo 2.5.0
  • prom/alertmanager v0.27.0
deployment/docker-compose.yml
  • postgres 16-alpine
  • redis 7.2.5-alpine
  • apache/kafka 3.7.0
  • quay.io/keycloak/keycloak 25.0.0
  • dockertmt/mmv2-config-server-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-service-registry-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-api-gateway 0.0.1-SNAPSHOT
  • dockertmt/mmv2-catalog-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-inventory-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-order-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-payment-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-retail-store-webapp 0.0.1-SNAPSHOT
inventory-service/docker/docker-compose-app.yml
inventory-service/docker/docker-compose.yml
  • postgres 16-alpine
  • apache/kafka 3.7.0
  • dockertmt/mmv2-config-server-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-service-registry-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-catalog-service 0.0.1-SNAPSHOT
order-service/docker/docker-compose-app.yml
order-service/docker/docker-compose.yml
  • postgres 16-alpine
  • apache/kafka 3.7.0
  • dockertmt/mmv2-config-server-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-service-registry-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-inventory-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-catalog-service 0.0.1-SNAPSHOT
payment-service/docker/docker-compose-app.yml
payment-service/docker/docker-compose.yml
  • postgres 16-alpine
  • apache/kafka 3.7.0
  • dockertmt/mmv2-config-server-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-catalog-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-service-registry-21 0.0.1-SNAPSHOT
  • dockertmt/mmv2-inventory-service 0.0.1-SNAPSHOT
  • dockertmt/mmv2-order-service 0.0.1-SNAPSHOT
retail-store-webapp/docker/docker-compose.yml
  • quay.io/keycloak/keycloak 25.0.0
service-registry/docker-compose.yml
  • dockertmt/mmv2-config-server-17 0.0.1-SNAPSHOT
dockerfile
.gitpod.Dockerfile
payment-service/Dockerfile
  • eclipse-temurin 21.0.3_9-jre-alpine
  • eclipse-temurin 21.0.3_9-jre-alpine
github-actions
.github/workflows/api-gateway.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/catalog-service.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/config-server.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/gatling-tests.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
.github/workflows/greetings.yml
  • actions/first-interaction v1
.github/workflows/inventory-service.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/label.yml
  • actions/labeler v5
.github/workflows/order-service.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/payment-service.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/retail-store-webapp.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/service-registry.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1
.github/workflows/sonar-cloud.yml
  • actions/checkout v4
  • actions/setup-java v4
  • actions/cache v4
catalog-service/.github/workflows/maven-dev.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
catalog-service/.github/workflows/maven-main.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
inventory-service/.github/workflows/maven-dev.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
inventory-service/.github/workflows/maven-main.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
order-service/.github/workflows/maven-dev.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
order-service/.github/workflows/maven-main.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
payment-service/.github/workflows/maven-dev.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
payment-service/.github/workflows/maven-main.yml
  • actions/checkout v4
  • actions/setup-java v4.2.1
maven
api-gateway/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.springdoc:springdoc-openapi-starter-webflux-ui 2.5.0
  • org.springdoc:springdoc-openapi-starter-common 2.5.0
  • com.github.wiremock:wiremock-testcontainers-java 1.0-alpha-13
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
  • org.jacoco:jacoco-maven-plugin 0.8.12
  • org.owasp:dependency-check-maven 9.2.0
catalog-service/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.mapstruct:mapstruct 1.5.5.Final
  • org.springdoc:springdoc-openapi-starter-webflux-ui 2.5.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.mapstruct:mapstruct-processor 1.5.5.Final
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • org.apache.maven.plugins:maven-checkstyle-plugin 3.4.0
  • com.puppycrawl.tools:checkstyle 10.17.0
  • org.jacoco:jacoco-maven-plugin 0.8.12
  • org.owasp:dependency-check-maven 9.2.0
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
  • org.sonarsource.scanner.maven:sonar-maven-plugin 4.0.0.4121
config-server/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • org.sonarsource.scanner.maven:sonar-maven-plugin 4.0.0.4121
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
gatling-tests/pom.xml
  • io.gatling.highcharts:gatling-charts-highcharts 3.11.3
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
  • io.gatling:gatling-maven-plugin 4.9.4
inventory-service/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.mapstruct:mapstruct 1.5.5.Final
  • org.springdoc:springdoc-openapi-starter-webmvc-ui 2.5.0
  • net.ttddyy.observation:datasource-micrometer-spring-boot 1.0.3
  • org.instancio:instancio-junit 4.8.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.testcontainers:testcontainers-jooq-codegen-maven-plugin 0.0.4
  • org.mapstruct:mapstruct-processor 1.5.5.Final
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • org.apache.maven.plugins:maven-checkstyle-plugin 3.4.0
  • com.puppycrawl.tools:checkstyle 10.17.0
  • org.jacoco:jacoco-maven-plugin 0.8.12
  • org.owasp:dependency-check-maven 9.2.0
  • org.sonarsource.scanner.maven:sonar-maven-plugin 4.0.0.4121
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
order-service/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • net.datafaker:datafaker 2.2.2
  • org.jobrunr:jobrunr-spring-boot-3-starter 7.2.0
  • net.ttddyy.observation:datasource-micrometer-spring-boot 1.0.3
  • org.springdoc:springdoc-openapi-starter-webmvc-ui 2.5.0
  • org.mapstruct:mapstruct 1.5.5.Final
  • org.mock-server:mockserver-netty 5.15.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.mapstruct:mapstruct-processor 1.5.5.Final
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • org.apache.maven.plugins:maven-checkstyle-plugin 3.4.0
  • com.puppycrawl.tools:checkstyle 10.17.0
  • org.jacoco:jacoco-maven-plugin 0.8.12
  • org.owasp:dependency-check-maven 9.2.0
  • org.sonarsource.scanner.maven:sonar-maven-plugin 4.0.0.4121
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
payment-service/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.zalando:problem-spring-web-starter 0.29.1
  • net.ttddyy.observation:datasource-micrometer-spring-boot 1.0.3
  • org.springdoc:springdoc-openapi-starter-webmvc-ui 2.5.0
  • net.datafaker:datafaker 2.2.2
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.testcontainers:testcontainers-jooq-codegen-maven-plugin 0.0.4
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
  • org.jacoco:jacoco-maven-plugin 0.8.12
  • org.owasp:dependency-check-maven 9.2.0
  • org.sonarsource.scanner.maven:sonar-maven-plugin 4.0.0.4121
pom.xml
retail-store-webapp/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.webjars:bootstrap 5.3.3
  • org.webjars:jquery 3.7.1
  • org.webjars:font-awesome 6.5.2
  • org.webjars.npm:alpinejs 3.14.0
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
service-registry/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.2
  • org.codehaus.mojo:properties-maven-plugin 1.2.1
  • org.sonarsource.scanner.maven:sonar-maven-plugin 4.0.0.4121
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
maven-wrapper
.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
api-gateway/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
catalog-service/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
config-server/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
gatling-tests/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
inventory-service/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
order-service/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
payment-service/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
retail-store-webapp/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8
service-registry/.mvn/wrapper/maven-wrapper.properties
  • maven 3.9.8

  • Check this box to trigger a request for Renovate to run again on this repository

Add Swagger Documentation

Swagger documentation should be added in below services

  • catalog-service
  • inventory-service
  • order-service
  • payment-service

Have retention period of kafka topics as minumum 1 day

With the current configuration, the messages are not retained, disposed of once sent. Having durable store will help to process messages sent earlier.

In all listener services makes sure that if it is registering for the first time then processing should be set to earliest and when registered change it to latest.

Remove zookeeper

Currently we are using kraft mode in all services except in inventory-service/docker/docker-compose.yml , move to kraft mode

Fix issue with tracing

  • Currently only order-service and inventory-service is printing traceId and spanId, Rest all are not printing it. Fix this
  • Catalog service is not pushing traces to zipkin. Fix this

Add Global exception Handler for validation

Configure Exception Handler for below services

  • catalog-service
  • inventory-service

Refer GlobalExceptionHandlingControllerAdvice.java from order-service and update the IT test cases to demonstrate validation is picked up(Refer to OrderControllerIT.java#shouldReturn400WhenCreateNewOrderWithoutItems

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.