public async Task Append(string tenantId, Guid entityId, Guid commitId, params object[] events) { tenantId.MustNotBeEmpty(); entityId.MustNotBeDefault(); commitId.MustNotBeDefault(); if (events.IsNullOrEmpty()) { return; } var commit = new UnversionedCommit(tenantId, entityId, Utils.PackEvents(events), commitId, DateTimeOffset.Now); var dbgInfo = new{ tenantId, entityId, commitId }; EventStore.Logger.Debug("Appending {@commit} with events {@events}", dbgInfo, events); var rez = await _store.Append(commit); if (rez.WasSuccessful) { EventStore.Logger.Debug("Append succesful for commit {@commit}", dbgInfo); return; } throw new DuplicateCommitException(commitId, Utils.UnpackEvents(commit.Timestamp, commit.EventData, _settings.EventMappers)); }
public async Task mini_benchmark() { LogManager.OutputTo(f => { }); var s = new Stopwatch(); var arr = Enumerable.Range(1, 1000).Select(d => Setup.UnversionedCommit()).ToArray(); s.Start(); //Parallel.For(1, 1000, async (i, state) => //{ // await _store.Append(arr[i - 1]); //}); foreach (var g in arr) { await _store.Append(g); } s.Stop(); _t.WriteLine($"1000 commits in {s.ElapsedMilliseconds}ms"); }