public void ConsumeEvent(Event @event) { foreach (IEventHandler handler in eventHandlerProvider.GetEventHandlers(@event.GetType())) { handler.When(@event); } }
public async Task PublishAsync(IEnumerable <DomainEvent> events) { foreach (DomainEvent domainEvent in events) { Type eventType = domainEvent.GetType(); List <object> eventHandlers = _eventHandlerProvider.GetEventHandlers(eventType).OrderBy(o => o.GetType().Name).ToList(); foreach (dynamic eventHandler in eventHandlers) { await eventHandler.HandleAsync((dynamic)domainEvent); } } }
private bool DispatchEventsToHandlers(EventStream stream) { foreach (var evnt in stream.Events) { foreach (var handler in _eventHandlerProvider.GetEventHandlers(evnt.GetType())) { var success = _retryService.TryAction("DispatchEventToHandler", () => DispatchEventToHandler(evnt, handler), 2); if (!success) { return(false); } } } return(true); }
private bool DispatchEventsToHandlers(EventStream stream) { bool success = true; foreach (var evnt in stream.Events) { foreach (var handler in _eventHandlerProvider.GetEventHandlers(evnt.GetType())) { if (!_retryService.TryRecursively("DispatchEventToHandler", () => DispatchEventToHandler(evnt, handler), 3)) { success = false; } } } if (success) { foreach (var evnt in stream.Events) { _eventHandleInfoCache.RemoveEventHandleInfo(evnt.Id); } } return(success); }