Skip to content
Latchkey

O Que É um Event Bus? O Canal Compartilhado para Eventos

Um event bus é um canal compartilhado pelo qual componentes publicam eventos e se inscrevem naqueles que lhes importam, sem referenciar uns aos outros diretamente.

Um event bus é o tecido conectivo de um design orientado a eventos. Componentes depositam eventos no bus e escutam os eventos de que precisam, desacoplados de quem os produziu. A mesma ideia aparece em duas escalas: um event bus in-process dentro de um único app, e um event bus distribuído abrangendo serviços.

A ideia do canal compartilhado

Em vez de conectar componentes diretamente uns aos outros, você conecta todos a um bus. Um publisher posta um evento; subscribers registrados para aquele tipo de evento são invocados. Adicionar ou remover um listener não toca no publisher.

In-process versus distribuído

Um event bus in-process é apenas um objeto dentro de uma aplicação que roteia eventos entre módulos. Um event bus distribuído roda sobre um broker e roteia eventos entre serviços. O padrão é o mesmo; o raio de impacto e os modos de falha diferem.

Para que serve

  • Desacoplar módulos ou serviços que não deveriam chamar uns aos outros diretamente.
  • Adicionar reações transversais (auditoria, notificações) sem editar produtores.
  • Manter uma costura limpa que você pode depois dividir através da rede.
  • Transmitir eventos de domínio para muitos handlers interessados.

Testando um event bus

Um bus in-process é fácil de testar: publique um evento e afirme que os handlers certos rodaram, tudo em um processo e rápido no CI. Um bus distribuído precisa do broker presente, então esses testes são mais lentos e vivem na camada de integração.

Cuidado com o acoplamento oculto

Um bus esconde dependências. Uma mudança em um tipo de evento pode quebrar um subscriber que você esqueceu que existia, sem um compilador para pegar. Trate os formatos de eventos como contratos e deixe o pipeline verificar subscribers contra eles.

Onde se encaixa em um parque de CI

Testes de event bus distribuído sobem infraestrutura a cada execução; um bus in-process não. Saber qual tipo você tem indica se runners aquecidos (como o Latchkey) estão fazendo o trabalho pesado sobre seus tempos de teste.

Principais conclusões

  • Um event bus é um canal compartilhado para publicar e se inscrever em eventos.
  • Ele existe in-process dentro de um app e distribuído entre serviços sobre um broker.
  • Seu acoplamento oculto faz dos esquemas de eventos contratos que vale a pena verificar no pipeline.

Guias relacionados