Pular para o conteúdo

Filas e jobs em background: tirando tarefas pesadas da requisição

O usuário clica em "gerar relatório" e espera 40 segundos com a tela travada. Veja como tirar tarefas pesadas da requisição com filas e jobs.

Por Equipe We Codex3 min de leitura

Enviar e-mails, gerar PDFs, processar planilhas, chamar APIs lentas. Quando essas tarefas rodam dentro da requisição, o usuário espera, o servidor fica ocupado e, se algo falhar no meio, o trabalho se perde.

A ideia

A requisição só registra o pedido numa fila e responde na hora: "estamos processando". Um processo separado — o *worker* — pega a tarefa, executa e avisa quando termina.

Onde aplicar

O que uma boa fila oferece

  1. 1.Retentativas automáticas com espera crescente.
  2. 2.Persistência: se o servidor reiniciar, a tarefa não se perde.
  3. 3.Prioridades: e-mail de senha antes de newsletter.
  4. 4.Visibilidade: quantas tarefas estão pendentes, falhando ou concluídas.

Em Node.js, bibliotecas como BullMQ (sobre Redis) resolvem a maioria dos casos.

Cuidados

Webhooks recebidos de parceiros também se beneficiam desse padrão (Webhooks confiáveis: idempotência, retentativas e ordem dos eventos).

A We Codex constrói backends assíncronos em sistemas web. Fale com a gente.

  • Filas
  • Jobs
  • Node.js
  • Escalabilidade
CompartilharWhatsAppLinkedIn

Resolver de vez, com quem faz isso todo dia

Precisa de uma API ou integração que não caia quando o negócio crescer?

Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.