Giter Club home page Giter Club logo

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

Hi there ๐Ÿ‘‹

  • ๐Ÿ“ซ How to reach me:
Raja's Twitter ย  Raja's Linkedin ย  Raja's StackOverflow ย 

  • ๐Ÿ”ญ Iโ€™m currently working on Java, Spring Boot, Spring Cloud
  • ๐ŸŒฑ Iโ€™m currently learning Quarkus, Micronaut, Kubernates
  • ๐Ÿ’ป Iโ€™m exploring Quarkus, Kubernetes and GitOps
  • ๐Ÿ’ฌ Ask me about Java, SpringBoot, Docker or any tech related stuff.

Twitter follow @rajadilipkolli ย  Linkedin follow @rajadilipkolli ย 

Languages and Tools:

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  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

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

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.

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.

Remove zookeeper

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

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

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.

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.1
  • 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.1
  • quay.io/keycloak/keycloak 25.0.1
  • 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.1.0
  • grafana/loki 3.1.0
  • grafana/promtail 3.1.0
  • prom/prometheus v2.53.1
  • 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.1
  • quay.io/keycloak/keycloak 25.0.1
  • 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.1
  • 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.1
  • 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.1
  • 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.1
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.1
  • org.springdoc:springdoc-openapi-starter-webflux-ui 2.6.0
  • org.springdoc:springdoc-openapi-starter-common 2.6.0
  • com.github.wiremock:wiremock-testcontainers-java 1.0-alpha-13
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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 10.0.2
catalog-service/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.1
  • org.mapstruct:mapstruct 1.5.5.Final
  • org.springdoc:springdoc-openapi-starter-webflux-ui 2.6.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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 10.0.2
  • 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.1
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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.5
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
  • io.gatling:gatling-maven-plugin 4.9.6
inventory-service/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.1
  • org.mapstruct:mapstruct 1.5.5.Final
  • org.springdoc:springdoc-openapi-starter-webmvc-ui 2.6.0
  • net.ttddyy.observation:datasource-micrometer-spring-boot 1.0.5
  • org.instancio:instancio-junit 4.8.1
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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 10.0.2
  • 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.1
  • net.datafaker:datafaker 2.3.1
  • org.jobrunr:jobrunr-spring-boot-3-starter 7.2.2
  • net.ttddyy.observation:datasource-micrometer-spring-boot 1.0.5
  • org.springdoc:springdoc-openapi-starter-webmvc-ui 2.6.0
  • org.mapstruct:mapstruct 1.5.5.Final
  • org.mock-server:mockserver-netty 5.15.0
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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 10.0.2
  • 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.1
  • org.zalando:problem-spring-web-starter 0.29.1
  • net.ttddyy.observation:datasource-micrometer-spring-boot 1.0.5
  • org.springdoc:springdoc-openapi-starter-webmvc-ui 2.6.0
  • net.datafaker:datafaker 2.3.1
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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 10.0.2
  • 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.1
  • 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.1
  • com.diffplug.spotless:spotless-maven-plugin 2.43.0
service-registry/pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.1
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
  • 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

Upgrade to Java 17

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

Add Swagger Documentation

Swagger documentation should be added in below services

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

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.

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

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.