Principio: Messaging desacopla servicos no tempo e no espaco. O produtor nao precisa saber quem consome, nem quando. Isso gera resiliencia, escalabilidade e peak shaving.

O que e Messaging?

Messaging e o padrao de comunicacao assincrona entre servicos. Em vez de chamadas HTTP diretas (sincrono, acoplado), um servico envia uma mensagem para um broker intermediario. O consumidor processa quando estiver pronto.

Por que usar Messaging?

BeneficioExplicacao
DesacoplamentoProdutor e consumidor nao se conhecem. Podem evoluir independentemente.
ResilienciaSe o consumidor estiver fora, a mensagem fica no broker ate ele voltar. Nenhum dado perdido.
EscalabilidadeAdicione mais consumidores para processar em paralelo (competing consumers).
Peak ShavingPicos de carga sao absorvidos pela fila. Consumidores processam no seu ritmo.
AuditoriaMensagens podem ser persistidas, reprocessadas e auditadas.

Fluxo basico: Producer - Broker - Consumer

SendDeliverProducerBrokerConsumer

Termos-chave

TermoDefinicao
ProducerServico que envia a mensagem ao broker.
ConsumerServico que le e processa a mensagem.
BrokerIntermediario que armazena e roteia mensagens (RabbitMQ, Kafka, Azure Service Bus).
MessagePayload serializado (JSON, Protobuf) com headers e metadados.
QueueFila FIFO. Cada mensagem e entregue a um unico consumidor.
Topic / ExchangePonto de distribuicao que roteia mensagens para uma ou mais filas/subscriptions.
BindingRegra que conecta um exchange a uma fila (routing key, headers, fanout).
Acknowledgment (ACK)Consumidor confirma que processou. Broker remove da fila apos ACK.
Dead Letter Queue (DLQ)Fila para mensagens que falharam apos N tentativas. Permite analise e reprocessamento.

Garantias de entrega

GarantiaComportamentoTrade-off
At-most-onceMensagem pode ser perdida, mas nunca duplicada. Fire-and-forget.Mais rapido, mas risco de perda. Bom para metricas/logs nao criticos.
At-least-onceMensagem nunca e perdida, mas pode ser entregue mais de uma vez.Consumidor precisa ser idempotente. Padrao mais usado em producao.
Exactly-onceMensagem entregue exatamente uma vez. Requer transacao distribuida ou deduplicacao.Muito caro em performance. Kafka Transactions + idempotent producer chega perto.
Qual a diferenca entre comunicacao sincrona (HTTP) e assincrona (messaging)?
HTTP sincrono: o caller bloqueia esperando resposta. Acoplamento temporal β€” se o destino estiver fora, a chamada falha. Messaging assincrono: o produtor envia e segue. O broker armazena a mensagem. O consumidor processa quando puder. Vantagens do messaging: resiliencia (broker persiste), escalabilidade (competing consumers), peak shaving (fila absorve picos). Desvantagens: complexidade operacional, eventual consistency, debugging mais dificil (tracing distribuido necessario).