n8n queue mode con Redis
Cómo configurar n8n en queue mode con Redis y workers separados para escalar workflows con LLMs y webhooks de alta concurrencia en producción.
En producción, ejecutar n8n en queue mode evita que un workflow lento (una llamada a un LLM de 30s, por ejemplo) trabe toda la cola de webhooks.
Arquitectura
Webhook ──▶ n8n main (HTTP) ──▶ Redis (cola) ──▶ n8n worker(s) ──▶ Postgres
main: recibe el webhook, lo encola y devuelve 200 de inmediatoworker: toma de la cola, ejecuta y persiste en PostgresRedis: broker de la cola (BullMQ por debajo)
Requisitos previos
- Postgres 14+ (recomendado: contenedor o servicio externo)
- Redis 7+
- VPS con 4+ vCPU y 8 GB de RAM
docker-compose.yml mínimo
services:
postgres:
image: postgres:16
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: n8n
volumes:
- pg_data:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:7-alpine
restart: unless-stopped
n8n-main:
image: docker.n8n.io/n8nio/n8n
environment:
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
DB_POSTGRESDB_DATABASE: n8n
N8N_HOST: n8n.exemplo.com
WEBHOOK_URL: https://n8n.exemplo.com/
N8N_PROTOCOL: https
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
ports:
- "5678:5678"
depends_on: [postgres, redis]
restart: unless-stopped
n8n-worker:
image: docker.n8n.io/n8nio/n8n
command: worker
environment:
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
DB_POSTGRESDB_DATABASE: n8n
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
depends_on: [postgres, redis]
restart: unless-stopped
volumes:
pg_data:
Escalar workers
Para más throughput, escala solo los workers:
docker compose up -d --scale n8n-worker=4
Cada worker toma 1 job a la vez por defecto. Para jobs ligeros (sin LLM), sube N8N_CONCURRENCY=10 por worker.
Cómo saber si está funcionando
Busca este log en los workers al iniciar:
n8n Task Broker is now accepting connections on port 5679
n8n worker is now ready
- version: 1.x.x
- concurrency: 10
Y en el main:
Editor is now accessible via:
https://n8n.exemplo.com/
Monitoreo
Se recomienda exponer métricas de BullMQ vía /metrics (Prometheus) y graficarlas en Grafana:
- Jobs activos / en espera / completados
- Tiempo promedio de ejecución por workflow
- Fallas por hora
Próximos pasos
Última actualización: