Pular para o conteúdo principal

Event Message

Descrição​

Event Message é uma mensagem que notifica, de forma assíncrona, que algo aconteceu. O sujeito empacota o evento em uma mensagem e a publica em um canal; o observador a recebe, extrai o evento e reage.

O foco está no fato de o evento ter ocorrido, e não no volume de dados. Muitos eventos nem carregam conteúdo: a mera chegada da mensagem já sinaliza ao observador que deve agir. Por isso o tempo importa: o evento deve ser publicado logo e processado enquanto ainda é relevante.

Problemas que resolve​

  • Aplicações precisam coordenar ações reagindo a mudanças umas das outras.
  • Evitar acoplamento forte entre quem muda de estado e quem precisa saber disso.
  • Entregar notificações com baixa latência a um ou vários observadores.

Quando usar​

  • Para notificar mudanças de estado a observadores interessados.
  • Com um canal publish-subscribe, quando vários consumidores reagem ao mesmo evento.
  • Com Message Expiration, quando eventos antigos perdem a utilidade.

Quando evitar​

  • Quando o receptor precisa receber dados completos e confiáveis (use Document Message).
  • Quando se quer comandar uma ação específica (use Command Message).
  • Quando todo evento precisa ser entregue sem perda; eventos frequentes e sensíveis ao tempo raramente justificam Guaranteed Delivery, mas se a perda for inaceitável, reavalie.

Trade-offs​

GanhoCusto / Risco
Baixo acoplamento entre sujeito e observadoresDifícil saber quem reage a cada evento
Notificação rápida e assíncronaEventos perdidos ou atrasados podem deixar observadores desatualizados
Fácil adicionar novos observadoresFluxo de negócio distribuído é mais difícil de rastrear
  • Eventos pequenos pedem que o observador consulte a fonte para obter detalhes.
  • Defina expiração para descartar eventos obsoletos.

Diagrama​

O sujeito publica o evento uma vez e cada observador o recebe e reage.

Padrões relacionados​

Referência​