示例#1
0
        public void Store(UncommittedEventStream eventStream)
        {
            var commit = new MongoCommit
            {
                CommitId      = eventStream.CommitId,
                EventSourceId = eventStream.SourceId,
                FromVersion   = eventStream.InitialVersion,
                ToVersion     = eventStream.Last().EventSequence,
                Events        = eventStream.Select(e => e.EventIdentifier).ToArray(),
                Processed     = false
            };

            try
            {
                try
                {
                    SafellyInsertCommit(commit);
                    InsertEvents(eventStream);
                    MarkCommitAsProcessed(commit.CommitId);
                }
                catch
                {
                    RemoveUnprocessedCommit(commit.CommitId);
                    throw;
                }
            }
            catch (MongoSafeModeException ex)
            {
                if (ex.Message.Contains(CONCURRENCY_ERROR_CODE))
                {
                    throw new ConcurrencyException(eventStream.SourceId, -1);
                }
            }
        }
示例#2
0
 private void SafellyInsertCommit(MongoCommit commit)
 {
     try
     {
         var result = _commits.Insert(commit, SafeMode.True);
         _commits.Validate();
     }
     catch (MongoSafeModeException ex)
     {
         if (ex.Message.Contains(CONCURRENCY_ERROR_CODE))
         {
             throw new ConcurrencyException(commit.EventSourceId, commit.FromVersion);
         }
     }
 }
示例#3
0
 private void RemoveEventsForCommit(MongoCommit commit)
 {
     _events.Remove(Query.In("EventIdentifier", BsonArray.Create(commit.Events)));
 }
示例#4
0
        public void Store(UncommittedEventStream eventStream)
        {
            var commit = new MongoCommit
            {
                CommitId = eventStream.CommitId,
                EventSourceId = eventStream.SourceId,
                FromVersion = eventStream.InitialVersion,
                ToVersion = eventStream.Last().EventSequence,
                Events = eventStream.Select(e=>e.EventIdentifier).ToArray(),
                Processed = false
            };

            try
            {
                try
                {
                    SafellyInsertCommit(commit);
                    InsertEvents(eventStream);
                    MarkCommitAsProcessed(commit.CommitId);
                }
                catch
                {
                    RemoveUnprocessedCommit(commit.CommitId);
                    throw;
                }
            }
            catch (MongoSafeModeException ex)
            {
                if (ex.Message.Contains(CONCURRENCY_ERROR_CODE))
                    throw new ConcurrencyException(eventStream.SourceId, -1);
            }
        }
示例#5
0
 private void SafellyInsertCommit(MongoCommit commit)
 {
     try
     {
         var result = _commits.Insert(commit, SafeMode.True);
         _commits.Validate();
     }
     catch (MongoSafeModeException ex)
     {
         if (ex.Message.Contains(CONCURRENCY_ERROR_CODE))
             throw new ConcurrencyException(commit.EventSourceId, commit.FromVersion);
     }
 }
示例#6
0
 private void RemoveEventsForCommit(MongoCommit commit)
 {
     _events.Remove(Query.In("EventIdentifier", BsonArray.Create(commit.Events)));
 }
        public void Store(UncommittedEventStream eventStream)
        {
            var commit = new MongoCommit
            {
                CommitId = eventStream.CommitId,
                Events = eventStream.Select(evt => new MongoStoredEvent
                {
                    Data = evt.Payload,
                    EventIdentifier = evt.EventIdentifier,
                    EventSequence = evt.EventSequence,
                    EventSourceId = evt.EventSourceId,
                    EventTimeStamp = evt.EventTimeStamp,
                    Version = evt.EventVersion
                }).ToList()
            };

            _mongoServer.Connect();

            var db = _mongoServer.GetDatabase(_databaseName);
            var coll = db.GetCollection<MongoCommit>(_collectionName);

            coll.Save(commit, _safeMode);

            _mongoServer.Disconnect();
        }