Skip to content
Latchkey

O Que É uma Fila de Mensagens? Amortecendo Trabalho Entre Serviços

Uma fila de mensagens é um buffer que guarda mensagens entre um produtor e um consumidor para que cada um trabalhe no próprio ritmo.

Uma fila de mensagens desacopla aquilo que cria o trabalho daquilo que o executa. O produtor deposita uma mensagem; o consumidor a pega quando está pronto. Se os consumidores ficam para trás, a fila absorve o acúmulo em vez de descartar trabalho ou sobrecarregar um serviço downstream. É um dos blocos de construção mais comuns de sistemas assíncronos.

Como uma fila funciona

Um produtor enfileira uma mensagem; um consumidor a desenfileira, processa e a confirma. A fila normalmente garante que uma mensagem seja entregue ao menos uma vez e a mantém até ser confirmada, de modo que falhas não percam trabalho silenciosamente.

O que as filas oferecem

  • Buffer: picos são suavizados em vez de sobrecarregar consumidores.
  • Desacoplamento: produtor e consumidor escalam de forma independente.
  • Retry: mensagens que falham podem ser reentregues.
  • Durabilidade: mensagens sobrevivem a um restart do consumidor.

Garantias de entrega a projetar

A maioria das filas é ao menos uma vez, o que significa que uma mensagem pode chegar duas vezes. Consumidores precisam ser idempotentes para que reprocessar a mesma mensagem não cause dano. Mensagens que continuam falhando geralmente vão parar em uma dead-letter queue para inspeção.

Testando código apoiado em fila

No CI, a lógica de fila costuma ser testada de duas formas: testes unitários com uma fila falsa ou em memória, e testes de integração contra uma fila real rodando como service container. A camada de integração é o que captura bugs de serialização, ordenação e confirmação.

Filas mudam a segurança do deploy

Como um consumidor pode ser redeployado enquanto mensagens ficam na fila, você pode fazer deploy sem descartar trabalho em andamento. Mas uma mudança de formato de mensagem precisa permanecer retrocompatível, ou um novo produtor pode enfileirar mensagens que um consumidor antigo não consegue ler.

Subindo filas por build

Testes de integração que sobem um broker real a cada execução adicionam tempo de boot ao pipeline. Runners aquecidos (como os que o Latchkey fornece) evitam que esse overhead domine o feedback rápido.

Principais conclusões

  • Uma fila de mensagens amortece o trabalho para que produtores e consumidores rodem no próprio ritmo.
  • Entrega ao menos uma vez significa que consumidores precisam ser idempotentes.
  • Formatos de mensagem são contratos que devem permanecer retrocompatíveis entre deploys.

Guias relacionados