Visão geral dos contratos de mensageria assíncrona.
A AWSales utiliza uma arquitetura orientada a eventos onde os serviços se comunicam de forma assíncrona através de filas de mensagens. Ao invés de chamadas diretas entre serviços, os domínios publicam eventos quando algo relevante acontece — um custo é registrado, uma fatura é paga, uma assinatura muda de estado — e qualquer serviço interessado pode reagir de forma independente.Todas as mensagens seguem a especificação CloudEvents v1.0, fornecendo um envelope padronizado que torna os eventos auto-descritivos e interoperáveis.
Eventos são entregues com garantia at-least-once. Isso significa que um consumidor pode receber o mesmo evento mais de uma vez — por exemplo, durante retentativas após uma falha transitória. Seus handlers devem estar preparados para entregas duplicadas.
Sempre projete seus event handlers para serem idempotentes. Use o campo id do envelope CloudEvents como chave de deduplicação. Antes de processar, verifique se você já tratou um evento com aquele ID. Isso protege contra efeitos colaterais duplicados como cobranças duplicadas ou envio de notificações repetidas.
A ordenação dos eventos não é garantida. Eventos podem chegar fora de ordem, especialmente durante períodos de alto throughput ou após retentativas. Não dependa da sequência dos eventos — use o campo time e campos específicos do domínio (como status ou timestamps no payload) para determinar o estado correto. Se a ordenação for importante para o seu caso de uso, implemente um mecanismo de reconciliação.