$mermaidjs
Clean Architecture Demo
Loading...
Searching...
No Matches
TaskManagement.Infrastructure.EventDispatching.MediatRDomainEventDispatcher Class Referencesealed

MediatRDomainEventDispatcher es la implementación de publicación de eventos del dominio utilizando MediatR. More...

Inheritance diagram for TaskManagement.Infrastructure.EventDispatching.MediatRDomainEventDispatcher:
Collaboration diagram for TaskManagement.Infrastructure.EventDispatching.MediatRDomainEventDispatcher:

Public Member Functions

 MediatRDomainEventDispatcher (IMediator mediator)
 
async Task DispatchAsync (IReadOnlyCollection< DomainEvent > events, CancellationToken cancellationToken=default)
 

Detailed Description

MediatRDomainEventDispatcher es la implementación de publicación de eventos del dominio utilizando MediatR.

Rol en Clean Architecture:

  • Parte de la capa de Infraestructura
  • Implementa interfaz IDomainEventDispatcher -definida en Capa de Aplicación-
  • Preocupación de infraestructura: Detalles de cómo se envían los eventos
  • Desacopla lógica del dominio de mecanismos de manejo de eventos

Envío de Eventos del dominio:

  • Publica eventos del dominio elevados por agregados
  • Ejecuta manejadores de eventos registrados de forma asíncróna
  • Soporta preocupaciones transversales -correos, notificaciones, registro-
  • Mantiene código del dominio limpio libre de conocimiento de infraestructura

Integración con MediatR:

  • Utiliza método Publish para distribución de eventos asíncróna
  • Soporta múltiples manejadores por evento
  • Los manejadores se ejecutan en paralelo a menos que se ordene explícitamente
  • Soporta manejo de transacciones y resiliencia de errores

Flujo de Eventos:

  1. Entidad del dominio eleva evento del dominio -ej. TaskCreatedEvent-
  2. Servicio de aplicación persiste cambios de entidades
  3. Servicio de aplicación llama a IDomainEventDispatcher.DispatchAsync
  4. MediatRDomainEventDispatcher publica eventos a través de MediatR
  5. MediatR encuentra y ejecuta todos los INotificationHandler< TEvent > registrados
  6. Los manejadores ejecutan efectos secundarios -enviar correo, actualizar modelo de lectura, etc.-

Beneficios:

  • Desacopla eventos de manejadores
  • Soporta múltiples manejadores por evento sin coordinación
  • La infraestructura puede ser intercambiada -MediatR -> otro bus de eventos-
  • Los manejadores pueden ser agregados/eliminados sin cambios del dominio
  • Habilita procesamiento de eventos asíncróno y retrasado

Definition at line 58 of file MediatRDomainEventDispatcher.cs.

Constructor & Destructor Documentation

◆ MediatRDomainEventDispatcher()

TaskManagement.Infrastructure.EventDispatching.MediatRDomainEventDispatcher.MediatRDomainEventDispatcher ( IMediator  mediator)

Definition at line 62 of file MediatRDomainEventDispatcher.cs.

Member Function Documentation

◆ DispatchAsync()

async Task TaskManagement.Infrastructure.EventDispatching.MediatRDomainEventDispatcher.DispatchAsync ( IReadOnlyCollection< DomainEvent events,
CancellationToken  cancellationToken = default 
)

The documentation for this class was generated from the following file: