Skip to content

nicko-08/decoupling-apps-kafka-spring-boot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kafka Order Processing System (Spring Boot Modularity + Docker)

A modular Spring Boot system demonstrating event-driven architecture using Apache Kafka, with services for order processing and inventory management.

This project showcases how to decouple services using Kafka while maintaining data consistency across modules.


Architecture Overview

Client → Producer API → Kafka Topic → Consumers
                                      ├── Order Service (DB)
                                      └── Inventory Service (DB)

Modules

Module Responsibility
pssdata Shared DTOs (Order, OrderItem)
producer Publishes order events to Kafka
consumer Persists orders into database
inventory Updates stock based on orders

Tech Stack

  • Java 17
  • Spring Boot
  • Spring Kafka
  • Spring Data JPA
  • MySQL
  • Docker / Docker Compose

Key Features

  • Event-driven communication using Kafka
  • Modular architecture (shared DTO layer)
  • Asynchronous processing
  • Inventory synchronization
  • Transactional database operations
  • Dockerized Kafka broker

Kafka Flow

  1. Client sends order → Producer API

  2. Producer publishes to pss_order

  3. Consumers process event:

    • Order Service → saves order
    • Inventory Service → updates stock

Running the Project

1. Start Kafka

docker-compose up -d

2. Run Services

Run each module:

cd producer && mvn spring-boot:run
cd consumer && mvn spring-boot:run
cd inventory && mvn spring-boot:run

3. Test API

POST /api/v1/kafka/publish

Example payload:

{
  "id": 1,
  "customerName": "Nicko",
  "items": [
    {
      "productId": 1,
      "productName": "Keyboard",
      "quantity": 2,
      "price": 1500
    }
  ]
}

Project Structure

├── producer/
├── consumer/
├── inventory/
├── pssdata/
├── docker-compose.yml
├── .env.example
├── application-example.yml

Improvements / Future Work

  • Add retry mechanism (Kafka DLQ)
  • Introduce schema validation (Avro / Schema Registry)
  • Add centralized logging (ELK stack)
  • Add API gateway
  • Convert to full microservices deployment

About

Event-driven Spring Boot system using Apache Kafka for decoupled order processing and inventory management, with modular architecture and Docker-based orchestration.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages