protected internal void OnEventStreamStateChanged(object sender, EventStreamStateChangedArgs args)
        {
            var allEvents = args.Events;

            if (!allEvents.Any())
            {
                return;
            }

            WithProcessMonitoring(() =>
            {
                var eventsStreams = allEvents.GroupBy(e => e.StreamName)
                                    .Select(grp => grp.AsEnumerable())
                                    .Select(grp => grp.OrderBy(e => e.Version).ToList());

                foreach (var eventStream in eventsStreams)
                {
                    var firstEvent = eventStream.First();
                    var streamName = firstEvent.StreamName;

                    try
                    {
                        EnsureContiguousVersions(streamName, eventStream);
                        HandleStreamEvents(streamName, eventStream);
                    }
                    catch (Exception ex)
                    {
                        ProcessingErrors.Add(
                            new EventProcessingError(ex, streamName));

                        //Continue onto next stream
                    }
                }
            });
        }
Esempio n. 2
0
        public void Initialize()
        {
            this.logger        = new Mock <ILogger>();
            this.domainFactory = new Mock <IDomainFactory>();
            this.migrator      = new Mock <IChangeEventMigrator>();
            this.repository    = new Mock <IRepository>();
            this.storage       =
                new GeneralEventStreamStorage <TestAggregateRoot>(this.logger.Object, this.domainFactory.Object,
                                                                  this.migrator.Object, this.repository.Object);

            this.stateChangedEvent = null;
            this.storage.OnEventStreamStateChanged += (sender, args) => { this.stateChangedEvent = args; };
        }
        public GeneralEventStreamStorageSpec()
        {
            var recorder = new Mock <IRecorder>();

            this.domainFactory = new Mock <IDomainFactory>();
            var migrator = new Mock <IChangeEventMigrator>();

            this.repository = new Mock <IRepository>();
            this.storage    =
                new GeneralEventStreamStorage <TestAggregateRoot>(recorder.Object, this.domainFactory.Object,
                                                                  migrator.Object, this.repository.Object);

            this.stateChangedEvent = null;
            this.storage.OnEventStreamStateChanged += (sender, args) => { this.stateChangedEvent = args; };
        }