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
- Envio de e-mails e mensagens.
- Relatórios e exportações.
- Importação de arquivos grandes (Importação de planilhas grandes sem travar o servidor).
- Integrações com sistemas externos lentos.
- Processamento de imagens.
O que uma boa fila oferece
- 1.Retentativas automáticas com espera crescente.
- 2.Persistência: se o servidor reiniciar, a tarefa não se perde.
- 3.Prioridades: e-mail de senha antes de newsletter.
- 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
- Idempotência: uma tarefa repetida não pode cobrar duas vezes (Idempotência: como evitar cobrança duplicada e pedidos repetidos).
- Tarefas que falham sempre precisam ir para uma fila de análise, não repetir para sempre.
- Feedback ao usuário: status na tela e notificação quando terminar, com skeleton enquanto espera (Feedback assíncrono: por que trocar spinners genéricos por skeleton screens).
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
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.
Continue lendo
Tudo sobre Backend & APIs- Ler artigo
Backend & APIs3 min
Importação de planilhas grandes sem travar o servidor
O cliente sobe uma planilha com 80 mil linhas e o servidor trava. Como importar arquivos grandes com validação, progresso e relatório de erros.
- Ler artigo
Backend & APIs3 min
Webhooks confiáveis: idempotência, retentativas e ordem dos eventos
Webhooks chegam duplicados, fora de ordem ou nem chegam — e o pedido fica "pendente" para sempre. Veja como receber webhooks de forma confiável.
- Ler artigo
Backend & APIs3 min
Idempotência: como evitar cobrança duplicada e pedidos repetidos
O cliente clicou duas vezes em "pagar" e foi cobrado duas vezes. Idempotência é a técnica que impede isso — e todo sistema com pagamentos precisa dela.