示例#1
0
        public async Task AppendEventsToStreamAsync(string stream, IEnumerable <IEvent> events, int?expectedVersion, CancellationToken cancellationToken = default)
        {
            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var gregsEvents = new List <EventData>();

            foreach (var e in events)
            {
                var metadata = _serDes.Serialize(new EventMetadata(e.GetType(), CorrelationManager.GetCorrelationId()));
                var data     = _serDes.Serialize(e);
                var ge       = new EventData(e.EventId, GetFullTypeName(e.GetType()), true, data, metadata);
                gregsEvents.Add(ge);
            }

            using (var connection = await GetConnectionAsync())
            {
                await connection.AppendToStreamAsync(stream, expectedVersion ?? ExpectedVersion.Any, gregsEvents.ToArray());
            }

            stopWatch.Stop();
            _logger.LogDebug("GetEventStoreClient.AppendEventsToStreamAsync for {Stream} took {ElapsedMilliseconds} ms", stream, stopWatch.ElapsedMilliseconds);
        }
示例#2
0
        private IList <EventDescriptor> SerializeEvents(string streamId, IEnumerable <IEvent> events)
        {
            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var results = new List <EventDescriptor>();

            foreach (var @event in events)
            {
                var eventDescriptor = new EventDescriptor(@event.EventId, GetFullTypeName(@event.GetType()), _eventStoreSerDes.Serialize(@event), streamId, CorrelationManager.GetCorrelationId());
                results.Add(eventDescriptor);
            }

            stopWatch.Stop();
            _logger.LogDebug("EventStore.SerializeEvents for {Stream} took {ElapsedMilliseconds} ms", streamId, stopWatch.ElapsedMilliseconds);

            return(results);
        }