public void Store(UncommittedEventStream eventStream) { Parallel.ForEach <Guid>( eventStream.Select(es => es.EventSourceId).Distinct(), (eventSourceId) => SaveEvents(eventSourceId, eventStream.Where(es => es.EventSourceId == eventSourceId)) ); }
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); } } }
public void Store(UncommittedEventStream eventStream) { var tapeStream = new AzureTapeStream.AzureTapeStream(eventStream.SourceId.ToString(), Config.Config.Get("Eventing.AzureConnectionString"), Config.Config.Get("Eventing.AzureContainerName")); foreach (var record in eventStream.Select(evt => Streamer.SerializeEvent(evt.Payload as ISourcedEvent))) { tapeStream.Append(record); } }
public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream) { var events = uncommittedEventStream.Select(e => e).ToArray(); var parameters = new List <OracleParameter>(); var insertStatementBuilder = new StringBuilder(); insertStatementBuilder.Append("BEGIN "); for (var position = 0; position < events.Length; position++) { insertStatementBuilder.Append(GetParameterizedInsertStatement(position)); parameters.AddRange(_eventParameters.BuildFromEvent(position, events[position])); } insertStatementBuilder.Append(" END;"); Tuple <int, long>[] returnedIds; try { OpenConnection(); var transaction = _connection.BeginTransaction(); try { using (var command = _connection.CreateCommand()) { command.Transaction = transaction; command.CommandText = insertStatementBuilder.ToString(); command.Parameters.AddRange(parameters.ToArray()); command.BindByName = true; command.ExecuteNonQuery(); returnedIds = ExtractReturnedIds(parameters); transaction.Commit(); } } catch (Exception) { transaction.Rollback(); throw; } } finally { EnsureConnectionClosed(_connection); } PopulateEventId(returnedIds, events); var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId); if (events.Any()) { committedEventStream.Append(events); } return(committedEventStream); }
public void Store(UncommittedEventStream eventStream) { var sourcePath = string.Format("{0}{1}{2}", BasePath, Path.DirectorySeparatorChar, eventStream.SourceId); if (!Directory.Exists(BasePath)) { Directory.CreateDirectory(BasePath); } var tapeStream = new FileTapeStream.FileTapeStream(sourcePath); foreach (var record in eventStream.Select(evt => Streamer.SerializeEvent(evt.Payload as ISourcedEvent))) { tapeStream.Append(record); } }
public void Store(UncommittedEventStream eventStream) { Parallel.ForEach<Guid>( eventStream.Select(es => es.EventSourceId).Distinct(), (eventSourceId) => SaveEvents(eventSourceId, eventStream.Where(es => es.EventSourceId == eventSourceId)) ); }
public void Store(UncommittedEventStream eventStream) { var tapeStream = new AzureTapeStream.AzureTapeStream(eventStream.SourceId.ToString(), Settings.Default.AzureConnectionString, Settings.Default.AzureContainerName); foreach (var record in eventStream.Select(evt => Streamer.SerializeEvent(evt.Payload as ISourcedEvent))) { tapeStream.Append(record); } }
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); } }
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(); }