void DispatchBatchToViewManagers(IEnumerable <IViewManager> viewManagers, IEnumerable <EventData> batch)
        {
            var context   = new DefaultViewContext(_aggregateRootRepository, _domainTypeNameMapper);
            var eventList = batch
                            .Select(e => _domainEventSerializer.Deserialize(e))
                            .ToList();

            foreach (var viewManager in viewManagers)
            {
                _logger.Debug("Dispatching batch of {0} events to {1}", eventList.Count, viewManager);

                viewManager.Dispatch(context, eventList, _viewManagerProfiler);
            }
        }
Example #2
0
        public void Dispatch(IEventStore eventStore, IEnumerable <DomainEvent> events)
        {
            if (_stopped)
            {
                return;
            }

            try
            {
                var viewContext = new DefaultViewContext(_aggregateRootRepository, _domainTypeNameMapper);

                foreach (var e in events)
                {
                    try
                    {
                        if (!ViewLocator.IsRelevant <TViewInstance>(e))
                        {
                            continue;
                        }

                        var affectedViewIds = _viewLocator.GetAffectedViewIds(viewContext, e);

                        foreach (var viewId in affectedViewIds)
                        {
                            try
                            {
                                var viewInstance = _views.GetOrAdd(viewId, id => _dispatcher.CreateNewInstance(id));

                                _dispatcher.DispatchToView(viewContext, e, viewInstance);
                            }
                            catch (Exception exception)
                            {
                                throw new ApplicationException(string.Format("An error ocurred when dispatching {0} to view with ID {1}",
                                                                             e, viewId), exception);
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        throw new ApplicationException(string.Format("Could not dispatch {0} to view(s)", e), exception);
                    }
                }
            }
            catch (Exception exception)
            {
                _logger.Warn(exception, "An error occurred during event processing - the view will stop processing events!");
                _stopped = true;
            }
        }
Example #3
0
        void DispatchBatchToViewManagers(IEnumerable <IViewManager> viewManagers, List <DomainEvent> eventList, Dictionary <IViewManager, Pos> positions)
        {
            foreach (var viewManager in viewManagers)
            {
                var thisParticularPosition = positions[viewManager].Position;
                if (thisParticularPosition >= eventList.Max(e => e.GetGlobalSequenceNumber()))
                {
                    continue;
                }

                var context = new DefaultViewContext(_aggregateRootRepository, _domainTypeNameMapper, eventList);
                _viewContextItems.InsertInto(context.Items);

                _logger.Debug("Dispatching batch of {0} events to {1}", eventList.Count, viewManager);

                viewManager.Dispatch(context, eventList, _viewManagerProfiler);
            }
        }
        void DispatchBatchToViewManagers(IEnumerable <IViewManager> viewManagers, IEnumerable <EventData> batch, Dictionary <IViewManager, Pos> positions)
        {
            var context   = new DefaultViewContext(_aggregateRootRepository, _domainTypeNameMapper);
            var eventList = batch
                            .Select(e => _domainEventSerializer.Deserialize(e))
                            .ToList();

            foreach (var viewManager in viewManagers)
            {
                var thisParticularPosition = positions[viewManager].Position;
                if (thisParticularPosition >= eventList.Max(e => e.GetGlobalSequenceNumber()))
                {
                    continue;
                }

                _logger.Debug("Dispatching batch of {0} events to {1}", eventList.Count, viewManager);

                viewManager.Dispatch(context, eventList, _viewManagerProfiler);
            }
        }
        public void Dispatch(IEnumerable<DomainEvent> events)
        {
            var context = new DefaultViewContext(_aggregateRootRepository, _domainTypeNameMapper, events);

            foreach (var kvp in _viewContextItems)
            {
                context.Items[kvp.Key] = kvp.Value;
            }

            var eventList = events.ToList();

            foreach (var viewManager in viewManagers)
            {
                var thisParticularPosition = viewManager.GetPosition().Result;
                if (thisParticularPosition >= eventList.Max(e => e.GetGlobalSequenceNumber())) continue;

                _logger.Debug("Dispatching batch of {0} events to {1}", eventList.Count, viewManager);

                viewManager.Dispatch(context, eventList, new NullProfiler());
            }
        }
        public void Dispatch(IEnumerable <DomainEvent> events)
        {
            var context = new DefaultViewContext(_aggregateRootRepository, _domainTypeNameMapper, events);

            foreach (var kvp in _viewContextItems)
            {
                context.Items[kvp.Key] = kvp.Value;
            }

            var eventList = events.ToList();

            foreach (var viewManager in viewManagers)
            {
                var thisParticularPosition = viewManager.GetPosition().Result;
                if (thisParticularPosition >= eventList.Max(e => e.GetGlobalSequenceNumber()))
                {
                    continue;
                }

                _logger.Debug("Dispatching batch of {0} events to {1}", eventList.Count, viewManager);

                viewManager.Dispatch(context, eventList, new NullProfiler());
            }
        }