Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/caiodgallo/go-ama-queue
GAMA Queue is built using Go and focus on asynchronously process messages received from the main GAMA application.
https://github.com/caiodgallo/go-ama-queue
async go golang grafana messaging observability prometheus rabbitmq
Last synced: 5 days ago
JSON representation
GAMA Queue is built using Go and focus on asynchronously process messages received from the main GAMA application.
- Host: GitHub
- URL: https://github.com/caiodgallo/go-ama-queue
- Owner: CaioDGallo
- License: mit
- Created: 2024-08-11T23:45:51.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-09-04T14:41:47.000Z (4 months ago)
- Last Synced: 2025-01-05T11:42:33.876Z (5 days ago)
- Topics: async, go, golang, grafana, messaging, observability, prometheus, rabbitmq
- Language: Go
- Homepage: https://dash.gama.dessaperfumaria.com.br
- Size: 798 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GAMA - Message Queue and Metrics
![GoLang + RabbitMQ + Prometheus + Grafana](docs/assets/hero.png)
![License](https://img.shields.io/github/license/CaioDGallo/go-ama)
Welcome to the GAMA (Go - Ask Me Anything) async job queue. This project is built using GoLang, RabbitMQ, Prometheus, and Grafana.
## Table of Contents- [Introduction](#introduction)
- [Features](#features)
- [Installation](#installation)
- [Usage](#usage)
- [License](#license)## Introduction
The GAMA Queue asynchronously processes user data collected from the main GAMA application. RabbitMQ is used as the message broker, Prometheus + Grafana for metrics observability and dashboards, and GoLang leveraging the power of goroutines to concurrently process the messages.
- Grafana Dashboards:
RabbitMQ:
![RabbitMQ Dashboard](docs/assets/rabbitmq-dashboard.png)PostgreSQL:
![PostgreSQL Dashboard](docs/assets/postgresql-dashboard.png)Go Runtime:
![Go Runtime Dashboard](docs/assets/go-runtime-dashboard.png)## Features
- **Asynchronous Job Queue:** The GAMA Queue processes user data asynchronously using RabbitMQ.
- **Metrics and Observability:** Prometheus and Grafana are used to monitor the application's performance and health.
- **Concurrent Processing:** GoLang's goroutines are used to concurrently process the messages.
- **Dockerized Environment:** The application is dockerized for easy setup and deployment.## Installation
To get started with the Go AMA application, follow these steps:
1. **Clone the repository:**
```bash
git clone https://github.com/CaioDGallo/go-ama-queue.git
cd go-ama-queue
```2. **Build the Docker environment:**
```bash
docker compose up
```3. **The application should be up and running with all its dependencies:**
```
STDIN: Queue and general logging
METRICS: http://localhost:8081/metrics
```## Usage
Once the application is up and running, you can start processing messages. Currently the only two endpoints that generate user data to be processed are the Create Room and the Ask a Question endpoints:
This is the postman collection to run the endpoints of the main [GAMA](https://github.com/CaioDGallo/go-ama) application:
[![Run in Postman](https://run.pstmn.io/button.svg)](https://raw.githubusercontent.com/CaioDGallo/go-ama/main/docs/GAMA.postman_collection.json)## License
This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for more details.
---
Thank you for checking out the GAMA Queue application! If you have any questions or need further assistance, feel free to reach out.