{"id":22221294,"url":"https://github.com/jerry-felipe/asynchronous-rabbitmq-solution","last_synced_at":"2025-10-13T06:31:53.543Z","repository":{"id":263466314,"uuid":"890495386","full_name":"jerry-felipe/Asynchronous-RabbitMQ-Solution","owner":"jerry-felipe","description":"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.","archived":false,"fork":false,"pushed_at":"2024-12-20T15:35:50.000Z","size":4,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-20T16:34:46.402Z","etag":null,"topics":["ci-cd","docker","java","jwt","logging","rabittmq","scalability"],"latest_commit_sha":null,"homepage":"https://jerry-felipe.github.io/Asynchronous-RabbitMQ-Solution/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jerry-felipe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-18T17:03:55.000Z","updated_at":"2024-12-20T15:35:54.000Z","dependencies_parsed_at":"2024-11-19T05:21:38.063Z","dependency_job_id":null,"html_url":"https://github.com/jerry-felipe/Asynchronous-RabbitMQ-Solution","commit_stats":null,"previous_names":["jerry-felipe/asynchronous-rabbitmq-solution"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerry-felipe%2FAsynchronous-RabbitMQ-Solution","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerry-felipe%2FAsynchronous-RabbitMQ-Solution/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerry-felipe%2FAsynchronous-RabbitMQ-Solution/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerry-felipe%2FAsynchronous-RabbitMQ-Solution/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerry-felipe","download_url":"https://codeload.github.com/jerry-felipe/Asynchronous-RabbitMQ-Solution/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236309834,"owners_count":19128390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci-cd","docker","java","jwt","logging","rabittmq","scalability"],"created_at":"2024-12-02T23:12:59.674Z","updated_at":"2025-10-13T06:31:48.202Z","avatar_url":"https://github.com/jerry-felipe.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Asynchronous-RabbitMQ-Solution\nA 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.\n\n# Features  \n- Asynchronous Messaging: Handles background tasks without blocking other services.  \n- Message Queues: Efficient message distribution with RabbitMQ.  \n- Event-Driven Architecture: Supports event-driven systems, improving responsiveness.  \n- Scalable: Easily scales to handle high message volumes.  \n- Fault Tolerance: Ensures message delivery even in the event of service failures.  \n\n# Modules  \n- **Transaction Management**: Module in charge of the logic of transfers, deposits, and withdrawals, ensuring idempotence and consistency through distributed transactions.  \n- **Message Processing**: Module that publishes and consumes events in RabbitMQ, configuring DLQ for failed messages.  \n- **Security and Audit**: Module that implements JWT for authentication and generates detailed financial audit reports.  \n\n# Technologies Used  \n- Backend Framework: Spring Boot (Java)  \n- Message Broker: RabbitMQ  \n- JMS (Java Message Service): JMS for RabbitMQ message handling  \n- API Documentation: Swagger/OpenAPI  \n- Dependencies: Spring AMQP, RabbitMQ Client Library  \n\n# Set Up the Environment  \n1. **Install RabbitMQ**:  \n   - Follow the installation guide from [RabbitMQ official site](https://www.rabbitmq.com/download.html).  \n\n2. **Set up RabbitMQ**:  \n   - Ensure RabbitMQ is running on the local or remote server:  \n     ```bash\n     sudo systemctl start rabbitmq-server\n     ```\n\n3. **Configure Environment Variables**:  \n   - Create a `.env` file or set environment variables for RabbitMQ connection:  \n     ```env\n     RABBITMQ_HOST=localhost\n     RABBITMQ_PORT=5672\n     RABBITMQ_USERNAME=your_username\n     RABBITMQ_PASSWORD=your_password\n     ```\n\n4. **Add Dependencies to `pom.xml`**:  \n   Add the following dependencies to your `pom.xml` to integrate RabbitMQ with Spring Boot:  \n   ```xml\n   \u003cdependency\u003e\n       \u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n       \u003cartifactId\u003espring-boot-starter-amqp\u003c/artifactId\u003e\n   \u003c/dependency\u003e\n   \u003cdependency\u003e\n       \u003cgroupId\u003ecom.rabbitmq\u003c/groupId\u003e\n       \u003cartifactId\u003eamqp-client\u003c/artifactId\u003e\n       \u003cversion\u003e5.9.0\u003c/version\u003e\n   \u003c/dependency\u003e\n   ```\n\n5. **Run the Application**:  \n   - To start the Spring Boot application:  \n     ```bash\n     mvn spring-boot:run\n     ```\n\n# Usage  \n- Start the API server using Spring Boot:  \n  ```bash\n  mvn spring-boot:run\n  ```  \n- Access the API documentation at:  \n  ```\n  http://localhost:8080/swagger-ui.html\n  ```\n\n# Endpoints  \n| Endpoint                         | Method | Description                            |  \n|----------------------------------|--------|----------------------------------------|  \n| `/message/send`                 | POST   | Send a message to the queue.           |  \n| `/message/receive`              | GET    | Receive messages from the queue.       |  \n| `/message/status/{messageId}`   | GET    | Get the status of a message.           |  \n\n# Contributing  \nContributions are welcome! Please fork the repository and submit a pull request with detailed notes.\n\n# License  \nThis project is licensed under the MIT License.\n\n---  \nFor more information, contact jerry.felipe@gmail.com.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerry-felipe%2Fasynchronous-rabbitmq-solution","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerry-felipe%2Fasynchronous-rabbitmq-solution","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerry-felipe%2Fasynchronous-rabbitmq-solution/lists"}