n8n queue mode com Redis
Como configurar n8n em queue mode com Redis e workers separados para escalar workflows com LLMs e webhooks de alta concorrência.
Em produção, rodar o n8n em queue mode evita que um workflow lento (chamada LLM de 30s, por exemplo) trave a fila inteira de webhooks.
Arquitetura
Webhook ──▶ n8n main (HTTP) ──▶ Redis (fila) ──▶ n8n worker(s) ──▶ Postgres
main: recebe webhook, enfileira, retorna 200 imediatoworker: pega da fila, executa, persiste no PostgresRedis: broker da fila (BullMQ por baixo dos panos)
Pré-requisitos
- Postgres 14+ (recomendado: container ou serviço externo)
- Redis 7+
- VPS com 4+ vCPU e 8 GB 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 mais throughput, escale só os workers:
docker compose up -d --scale n8n-worker=4
Cada worker pega 1 job por vez por padrão. Para jobs leves (sem LLM), suba N8N_CONCURRENCY=10 por worker.
Como saber se está funcionando
Procure este log nos workers ao iniciar:
n8n Task Broker is now accepting connections on port 5679
n8n worker is now ready
- version: 1.x.x
- concurrency: 10
E no main:
Editor is now accessible via:
https://n8n.exemplo.com/
Monitoramento
Recomendado expor métricas do BullMQ via /metrics (Prometheus) e plotar no Grafana:
- Jobs ativos / aguardando / completos
- Tempo médio de execução por workflow
- Falhas por hora
Próximos passos
Última atualização: