public void ConsumeEvent(Event @event)
 {
     foreach (IEventHandler handler in eventHandlerProvider.GetEventHandlers(@event.GetType()))
     {
         handler.When(@event);
     }
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 4
0
        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);
        }