Por que não chamar cada consumidor?
Quando um pedido é confirmado, diferentes componentes podem atualizar uma projeção, enviar uma notificação ou registrar uma métrica. O publicador não precisa conhecer cada consumidor, desde que a semântica da notificação esteja clara.
Eventos em C#
public sealed class Pedido
{
public event EventHandler? Confirmado;
public void Confirmar()
{
// validar e mudar o estado do pedido
Confirmado?.Invoke(this, EventArgs.Empty);
}
}Eventos .NET são uma forma local do padrão. Em aplicações distribuídas, entrega, persistência, duplicatas e falhas exigem mensageria e garantias explícitas; eventos em memória não substituem isso.
Cuidados
Gerencie inscrições para evitar vazamentos, defina se handlers podem falhar e evite ciclos de notificações. Para coordenação explícita, considere Mediator; para fluxo assíncrono distribuído, veja Saga, Outbox e Inbox. Mais no guia GoF.