Event Bus

A infraestrutura que permite a comunicação assíncrona entre serviços por meio de eventos.

O que é um Event Bus?

É o mecanismo que permite que um serviço publique um fato relevante e que outros serviços reajam a ele sem a necessidade de chamadas diretas imediatas.

Por exemplo:

  • ms-orders publica OrderPlaced
  • ms-inventory consome esse evento
  • ms-notifications também o consome

Por que usar eventos?

Porque eles ajudam a:

  • desacoplar serviços no tempo
  • reduzir dependências síncronas
  • permitir múltiplas reações a um mesmo fato
  • construir processos distribuídos

Responsabilidades principais

  • Transporte de eventos
  • Publicação e assinatura
  • Retentativas
  • Tratamento de mensagens com falha
  • Suporte a DLQ
  • Apoio a processos distribuídos

O que não deveria ser

O event bus não deveria se tornar um lugar onde vive a lógica de negócio central. A lógica de reação deve estar nos serviços consumidores.

Tampouco deveria ser usado como desculpa para publicar eventos ambíguos ou mal definidos.

Conceitos importantes

Evento de domínio

Representa algo significativo que aconteceu no negócio.

Idempotência

Necessária porque as mensagens podem chegar mais de uma vez.

Dead Letter Queue

Lugar para onde vão as mensagens que não puderam ser processadas corretamente.

At-least-once delivery

Garantia comum em muitos brokers: a mensagem chegará ao menos uma vez, mas pode ser duplicada.

Trade-offs

Benefícios

  • Desacoplamento
  • Escalabilidade
  • Integração mais flexível
  • Processamento distribuído

Custos

  • Mais complexidade operacional
  • Consistência eventual
  • Observabilidade mais difícil
  • Necessidade de retentativas e idempotência

Exemplo prático

Um pedido é criado e confirmado.

ms-orders publica OrderPlaced.

A partir daí:

  • inventory dá baixa no estoque
  • notifications envia a confirmação
  • analytics registra o evento

Nenhum deles precisa ser chamado diretamente no mesmo fluxo síncrono.

Resumo

O Event Bus permite a comunicação assíncrona entre serviços. Seu valor está em desacoplar e distribuir responsabilidades, mas exige mais disciplina em contratos, observabilidade e idempotência.