Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jerry-felipe/asynchronous-rabbitmq-solution
A messaging solution using RabbitMQ to handle asynchronous communication between services. It enables decoupling of components, improving scalability and reliability. Ideal for event-driven architectures, message queues, and distributed systems with high throughput needs.
https://github.com/jerry-felipe/asynchronous-rabbitmq-solution
ci-cd docker java jwt logging rabittmq scalability
Last synced: 15 days ago
JSON representation
A messaging solution using RabbitMQ to handle asynchronous communication between services. It enables decoupling of components, improving scalability and reliability. Ideal for event-driven architectures, message queues, and distributed systems with high throughput needs.
- Host: GitHub
- URL: https://github.com/jerry-felipe/asynchronous-rabbitmq-solution
- Owner: jerry-felipe
- Created: 2024-11-18T17:03:55.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-12-20T15:35:50.000Z (about 2 months ago)
- Last Synced: 2024-12-20T16:34:46.402Z (about 2 months ago)
- Topics: ci-cd, docker, java, jwt, logging, rabittmq, scalability
- Language: HTML
- Homepage: https://jerry-felipe.github.io/Asynchronous-RabbitMQ-Solution/
- Size: 3.91 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Asynchronous-RabbitMQ-Solution
A RabbitMQ-based messaging system designed for asynchronous communication in financial transaction processing. It ensures component decoupling, enhancing scalability and reliability. Well-suited for event-driven architectures, message queues, and distributed systems managing high transaction volumes efficiently.# Features
- Asynchronous Messaging: Handles background tasks without blocking other services.
- Message Queues: Efficient message distribution with RabbitMQ.
- Event-Driven Architecture: Supports event-driven systems, improving responsiveness.
- Scalable: Easily scales to handle high message volumes.
- Fault Tolerance: Ensures message delivery even in the event of service failures.# Modules
- **Transaction Management**: Module in charge of the logic of transfers, deposits, and withdrawals, ensuring idempotence and consistency through distributed transactions.
- **Message Processing**: Module that publishes and consumes events in RabbitMQ, configuring DLQ for failed messages.
- **Security and Audit**: Module that implements JWT for authentication and generates detailed financial audit reports.# Technologies Used
- Backend Framework: Spring Boot (Java)
- Message Broker: RabbitMQ
- JMS (Java Message Service): JMS for RabbitMQ message handling
- API Documentation: Swagger/OpenAPI
- Dependencies: Spring AMQP, RabbitMQ Client Library# Set Up the Environment
1. **Install RabbitMQ**:
- Follow the installation guide from [RabbitMQ official site](https://www.rabbitmq.com/download.html).2. **Set up RabbitMQ**:
- Ensure RabbitMQ is running on the local or remote server:
```bash
sudo systemctl start rabbitmq-server
```3. **Configure Environment Variables**:
- Create a `.env` file or set environment variables for RabbitMQ connection:
```env
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=your_username
RABBITMQ_PASSWORD=your_password
```4. **Add Dependencies to `pom.xml`**:
Add the following dependencies to your `pom.xml` to integrate RabbitMQ with Spring Boot:
```xml
org.springframework.boot
spring-boot-starter-amqp
com.rabbitmq
amqp-client
5.9.0
```5. **Run the Application**:
- To start the Spring Boot application:
```bash
mvn spring-boot:run
```# Usage
- Start the API server using Spring Boot:
```bash
mvn spring-boot:run
```
- Access the API documentation at:
```
http://localhost:8080/swagger-ui.html
```# Endpoints
| Endpoint | Method | Description |
|----------------------------------|--------|----------------------------------------|
| `/message/send` | POST | Send a message to the queue. |
| `/message/receive` | GET | Receive messages from the queue. |
| `/message/status/{messageId}` | GET | Get the status of a message. |# Contributing
Contributions are welcome! Please fork the repository and submit a pull request with detailed notes.# License
This project is licensed under the MIT License.---
For more information, contact [email protected].