Sistema de gestión de logs de estaciones meteorológicas utilizando RabbitMQ, PostgreSQL y Docker.
Permite simular y procesar datos JSON de estaciones (temperatura, humedad, velocidad de viento), publicarlos en RabbitMQ y almacenarlos en PostgreSQL.
-
Producers en Python 3.13+ que generan datos JSON y los publican en un exchange o cola de RabbitMQ con mensajes persistentes.
-
Broker RabbitMQ configurado con cola durable (
weather_data) y dashboard de administración (puerto 15672). -
Consumers en Python que:
- Procesan mensajes con
manual_ackyprefetch_count=1. - Validan rango de temperatura (-50ºC a 100ºC).
- Persiste en PostgreSQL (tabla
weather_logs). - Manejan errores con
nacky reconexión automática.
- Procesan mensajes con
-
Base de datos PostgreSQL con script de inicialización (
db/init.sql). -
Docker Compose para levantar servicios:
- rabbitmq (5672/15672)
- postgres (5432)
- producer y consumer con volúmenes stateful.
-
Logging de eventos en consola y persistencia en DB.
-
Clona el repositorio
git clone https://github.com/Manuuell/meteo-utb.git cd meteo-utb -
Configura variables de entorno
Crea un archivo
.enven la raíz con:RABBITMQ_USER=user RABBITMQ_PASS=pass RABBITMQ_HOST=rabbitmq RABBITMQ_PORT=5672 POSTGRES_DB=weather POSTGRES_USER=postgres POSTGRES_PASSWORD=admin POSTGRES_HOST=postgres POSTGRES_PORT=5432
-
Inicializa contenedores
docker compose up -d --build
-
Carga el esquema de la base de datos
docker exec -i postgres psql -U postgres -d weather < db/init.sql
-
Verifica estado
- RabbitMQ dashboard: http://localhost:15672 (user/pass)
- PostgreSQL:
docker compose exec postgres psql -U postgres -d weather
-
Ejecuta logs
docker compose logs -f producer docker compose logs -f consumer
meteo-utb/
├── .env
├── db/
│ └── init.sql
├── producer/
│ ├── Dockerfile
│ ├── producer.py
│ └── requirements.txt
├── consumer/
│ ├── Dockerfile
│ ├── consumer.py
│ └── requirements.txt
└── docker-compose.yml
- Python 3.13, librerías:
pika,psycopg2-binary,python-dotenv. - RabbitMQ: cola durable y ACK manual para evitar pérdida.
- PostgreSQL: esquema stateful en volumen Docker.
- Docker Compose: orquesta arranque ordenado (
depends_on) y reinicios automáticos (restart: always).