O evento registra algo que já aconteceu
MatriculaConfirmada descreve um fato no passado. Um produtor publica o evento sem chamar diretamente cada consumidor. Um serviço de e-mail pode enviar confirmação; o de analytics pode atualizar uma métrica. O produtor conhece um contrato de evento, e os consumidores podem evoluir separadamente.
Abrir diagrama em tamanho original
SNS é um serviço de publicação e distribuição de mensagens na AWS; SQS é uma fila de mensagens; Kafka é um log distribuído que retém eventos para consumidores independentes acompanharem posições. Esses produtos têm garantias e custos diferentes. Uma topologia comum usa SNS para fan-out a várias filas SQS; Kafka pode ser escolhido quando retenção, replay e throughput de log são requisitos importantes.
Eventos introduzem consistência eventual, duplicatas, versionamento de contrato e novas necessidades de observabilidade. O consumidor precisa ser idempotente; publicar um evento e atualizar banco também exige tratar a possibilidade de apenas uma das ações concluir.
Recupere: depois de receber o mesmo evento duas vezes, como o consumidor evita duplicar o efeito?
Material complementar da Fernanda
- Caso NotiFly: notificações por eventos — Leia o estudo de caso NotiFly e identifique produtor, distribuição e consumidores. Diferencie publicar um fato de confirmar que todos os destinatários já receberam uma notificação.
Pratique com /aprender
/aprender Uma matrícula publica MatriculaConfirmada e dois consumidores trabalham: e-mail e analytics. Peça que eu diferencie produtor, tópico, fila e consumidor. Depois envie o mesmo evento duas vezes e me faça propor uma proteção idempotente.
