background-jobs
Installation
SKILL.md
Background jobs
O request HTTP não espera e-mail, PDF, webhook outbound pesado ou embed. Enfileire e responda. Outbox/eventos de domínio: event-driven-architecture. Broker Redis: redis-cache (keys de fila ≠ cache). HTTP de entrada de terceiros: webhooks.
Preserve o runner do repo (Bull/BullMQ, Sidekiq, River, Oban, Hangfire, pg-boss). Não troque a lib.
Regras inegociáveis
- Payload pequeno: IDs + tipo. O worker lê o canônico no DB. Sem blob de 2 MB na fila.
- Idempotência: a mesma
job_id/idempotency_keynão aplica o efeito duas vezes (unique no Postgres ou SET NX). - Retry com backoff + teto. Erro de negócio (
4xxlógico) não retry infinito. - Timeout no job. Cancelamento cooperativo se o runtime permitir.
- Dead letter / failed set visível; alarme. Não sumir com o erro.
Quando enfileirar
- I/O > ~200ms que o usuário não precisa na mesma resposta (e-mail, thumbnail, sync).
- Fan-out, retry, schedule (
cron/every). - Webhook outbound (
webhooks).