Beispiel #1
0
        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));
        }
Beispiel #2
0
        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");
        }