Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/heliolj/asynchronous-task-management-system
Task Management System using Microsservices. Powered by Java Spring Boot, Docker, RabbitMQ, PostgreSQL, and NGINX. Efficiently handles tasks with asynchronous processing for optimal performance
https://github.com/heliolj/asynchronous-task-management-system
docker java message-queue microservices nginx postgresql rabbitmq spring-boot
Last synced: 5 days ago
JSON representation
Task Management System using Microsservices. Powered by Java Spring Boot, Docker, RabbitMQ, PostgreSQL, and NGINX. Efficiently handles tasks with asynchronous processing for optimal performance
- Host: GitHub
- URL: https://github.com/heliolj/asynchronous-task-management-system
- Owner: helioLJ
- License: mit
- Created: 2023-11-13T21:04:58.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-16T14:05:56.000Z (about 1 year ago)
- Last Synced: 2024-11-25T23:33:51.246Z (2 months ago)
- Topics: docker, java, message-queue, microservices, nginx, postgresql, rabbitmq, spring-boot
- Language: Java
- Homepage:
- Size: 95.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Task Management System
## Overview
Task Management System, a robust Java Spring Boot application designed to streamline task creation, assignment, and tracking. This README provides essential technical information about the project, explaining its architecture, design decisions, and how to get started.
# Microservices Architecture
The project embraces a Microservices Architecture, promoting modularity, scalability, and resilience. Each aspect of task management, from creation to assignment, is encapsulated within independent, loosely coupled microservices.
![mermaid diagram](https://i.imgur.com/uyI4wKt.png)
## Project Structure
The project follows a modular structure to enhance maintainability and scalability:
- **`src/main/java`**: Java source code.
- **`src/test/java`**: Unitary and integration tests for controller and services.
- **`src/main/resources`**: Configuration files.
- **`docker-compose.yml`**: Docker Compose configuration.## Technologies Used
- **Java Spring Boot**: A powerful and flexible framework for building Java-based enterprise applications.
- **Docker**: Containerization for easy deployment and scalability.
- **RabbitMQ**: Asynchronous messaging for efficient task assignment.
- **PostgreSQL Database**: Utilizes a relational database for storing task information.
- **Asynchronous Processing with @Async from Spring Boot**: Implements parallelism for efficient task processing.
- **NGINX**: Efficiently handles load balancing and acts as a reverse proxy for the microservices.## Getting Started
To run the Task Management System locally, follow these steps:
### Building and Docker
Dockerize the application for simplified deployment:
1. Build the jar file: `mvn clean install`
2. Build the Docker image: `docker build -t task-management-system .`#### Running with full system with Docker
1. Run the docker containers: `docker compose up`
2. Access the application at [http://localhost:8080](http://localhost:8080)#### Running application locally
1. Put PostgreSQL and RabbitMQ containers up: `docker compose up postgres rabbitmq`
2. Run the Spring Boot application: `./mvnw spring-boot:run`
3. Access the application at [http://localhost:8080](http://localhost:8080)## Asynchronous Communication with RabbitMQ
RabbitMQ is integrated into the system to handle asynchronous communication. Task assignment events are processed efficiently, ensuring responsiveness.
## Parallelism
Task processing is optimized through parallel mechanisms. Utilizing Spring's `@Async` to parallelize task processing, enhancing system performance.
## Design and Architecture Patterns
The project adheres to SOLID principles, applying design patterns such as Factory, Repository, and Observer where necessary. DTOs facilitate clean separation of concerns for API communication.
## License
This project is licensed under the [MIT License](LICENSE.md). Feel free to use, modify, and distribute the code as per the terms of the license.
Happy coding! 🚀