Pular para o conteúdo

Arquitetura de software · Comunicação · 6 min de leitura

Filas e mensageria (pub/sub)

Em vez de chamar outro serviço e esperar, publique uma mensagem: quem precisa processa no seu ritmo, e picos viram fila em vez de erro.

Pedidos → Tópico: publicapublicaTópico → E-mailTópico → EstoqueTópico → AnálisesTópico → Fila de erros: falhas repetidasPedidos — produtorPedidosprodutorTópico — pedido_criadoTópicopedido_criadoE-mail — consumidorE-mailconsumidorEstoque — consumidorEstoqueconsumidorAnálises — consumidorAnálisesconsumidorFila de erros — DLQFila de errosDLQ

Arraste para o lado para ver o diagrama inteiro.

O produtor não sabe quem consome. Mensagens que falham várias vezes vão para uma fila separada (DLQ) para análise.

Fila x pub/sub

  • Fila: cada mensagem é processada por um consumidor (divisão de trabalho).
  • Pub/sub (tópico): cada grupo de consumidores recebe uma cópia (vários interessados no mesmo evento).

Garantias de entrega

Quase sempre a garantia é pelo menos uma vez: a mesma mensagem pode chegar duas vezes. Por isso os consumidores precisam ser idempotentes. Ordem só é garantida dentro de uma partição (no Kafka, por chave).

Quando usar

  • Tarefas lentas fora da requisição do usuário (e-mails, relatórios).
  • Desacoplar serviços e absorver picos.
  • Integrar sistemas por eventos.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →