Skip to content

pushpak90/distributed-task-processing-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Distributed Task Processing Platform

๐Ÿ“Œ Overview

A production-grade distributed task processing system built using Spring Boot, RabbitMQ, and MySQL.

This project showcases event-driven microservices architecture, focusing on asynchronous processing, fault tolerance, scalability, and reliable message delivery using industry-standard design patterns.


๐Ÿ—๏ธ System Architecture

Architecture Diagram

๐Ÿ”น API Service

  • Handles client task submissions
  • Persists tasks in MySQL
  • Implements Outbox Pattern for reliable event publishing

๐Ÿ”น Worker Service

  • Consumes messages from RabbitMQ
  • Executes tasks asynchronously
  • Handles retries, failures, and logging

๐Ÿ”น RabbitMQ (Message Broker)

  • Decouples services via asynchronous messaging
  • Supports:
    • Task Queue
    • Retry Queue (TTL-based delay)
    • Dead Letter Queue (DLQ)

๐Ÿ”„ System Flow

Client โ†’ API โ†’ DB โ†’ Outbox โ†’ RabbitMQ โ†’ Worker โ†’ DB
                                      โ†“
                                 Retry Queue
                                      โ†“
                                    DLQ

โš™๏ธ Features

โœ… Core Features

  • Asynchronous task processing using RabbitMQ
  • Microservices-based architecture
  • Reliable event publishing via Outbox Pattern

๐Ÿ” Reliability & Fault Tolerance

  • Configurable retry mechanism
  • Delayed retries using TTL queues
  • Dead Letter Queue (DLQ) for failed processing
  • Idempotent processing using DB-level safeguards

๐ŸŒ API Capabilities

  • Create and manage tasks
  • Retrieve task by ID
  • Pagination support
  • Filter tasks by status

๐Ÿ›ก๏ธ Error Handling

  • Centralized exception handling
  • Request validation
  • Structured API error responses

๐Ÿ“Œ Sample API Request

Create Task

POST /tasks

Request

{
  "title": "Process Order",
  "description": "Order ID 123"
}

Response

{
  "id": 1,
  "status": "PENDING"
}

๐Ÿงช API Endpoints

Feature Endpoint
Create Task POST /tasks
Get Task by ID GET /tasks/{id}
Get All Tasks GET /tasks
Pagination GET /tasks/paged?page=0&size=10
Filter by Status GET /tasks/status/{status}
Filter + Pagination GET /tasks/status/paged?status=FAILED&page=0&size=10

๐Ÿ”„ Task Lifecycle

PENDING โ†’ PROCESSING โ†’ COMPLETED
                 โ†“
              FAILED โ†’ RETRY โ†’ DLQ

๐Ÿ“ Project Structure

api-service/
  โ””โ”€โ”€ Handles task submission and persistence

worker-service/
  โ””โ”€โ”€ Processes tasks asynchronously

docs/
  โ””โ”€โ”€ Contains architecture diagrams

postman/
  โ””โ”€โ”€ API collections (optional)

๐Ÿง  Design Decisions

  • Used RabbitMQ for decoupled asynchronous communication
  • Implemented Outbox Pattern to ensure consistency between DB and messaging
  • Used DLQ for handling failed messages safely
  • Applied idempotency to prevent duplicate processing
  • Designed system for horizontal scalability

๐Ÿงฐ Tech Stack

  • Language: Java 21
  • Backend: Spring Boot
  • Database: MySQL
  • Messaging: RabbitMQ
  • ORM: Spring Data JPA
  • Build Tool: Gradle

๐Ÿš€ Getting Started

๐Ÿ”น Prerequisites

  • Java 21+
  • MySQL
  • RabbitMQ

๐Ÿ”น Run the Application

# Start API Service
cd api-service
./gradlew bootRun

# Start Worker Service
cd worker-service
./gradlew bootRun

๐Ÿ“Š Key Concepts Demonstrated

  • Distributed Systems Design
  • Event-Driven Architecture
  • Outbox Pattern
  • Retry & Failure Handling
  • Dead Letter Queue (DLQ)
  • Idempotent Processing
  • Pagination & Filtering
  • Exception Handling

๐Ÿ”ฎ Future Enhancements

  • Docker & Containerization
  • API Gateway Integration
  • JWT Authentication & Security
  • Monitoring (Prometheus, Grafana)
  • Database Migration (Flyway)

โญ Why This Project Matters

This project reflects real-world backend engineering practices:

  • Handles high-scale asynchronous workloads
  • Ensures data consistency & reliability
  • Demonstrates microservices communication patterns
  • Designed with production-grade architecture principles

๐Ÿ‘จโ€๐Ÿ’ป Author

Pushpak A. Fasate

About

Built a distributed task processing system using Spring Boot and RabbitMQ, implementing asynchronous processing with retry mechanism, Dead Letter Queue (DLQ), delayed retries, and idempotent worker design for fault tolerance and scalability.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages