~/VibeHandbook
PDF grátis

Capítulo 14 · 07

Filas

Uma fila permite dizer "faça isso depois" em vez de "faça isso agora." Quando um usuário se cadastra, você não quer que ele fique esperando enquanto você envia um email de boas-vindas e redimensiona seu avatar. Coloque essas tarefas em uma fila (RabbitMQ, BullMQ, Cloudflare Queues, SQS); um worker em segundo plano as pega. O usuário recebe uma resposta instantânea.

Use uma fila para qualquer tarefa que seja lenta, possa falhar e ser reprocessada, ou não precise terminar antes de você responder ao usuário.

O problema que a maioria dos iniciantes encontra é que um job enfileirado pode rodar mais de uma vez — uma falha de rede faz o worker tentar de novo, e agora o email de boas-vindas é enviado duas vezes. A solução é tornar os jobs idempotentes: desenhe-os para que rodar o mesmo job duas vezes tenha o mesmo efeito de rodá-lo uma vez (verifique "eu já enviei isso?" antes de enviar). Também decida de antemão o que acontece com um job que continua falhando; filas maduras roteiam isso para uma dead-letter (fila de mensagens mortas), para que uma mensagem envenenada não bloqueie tudo atrás dela.

Quer offline?

Baixe o livro inteiro em PDF ou EPUB — grátis.