public async Task Handle(EventRecord @event)
        {
            using var scope = _serviceScopeFactory.CreateScope();

            var mediator = scope.ServiceProvider.GetRequiredService <IMediator>();

            _logger.LogInformation("StreamHandler at position: {arg2}", @event.Position.CommitPosition);

            var message = await _eventStoreDbSerializer.Deserialize(@event);

            await mediator.Publish(message);
        }
Exemple #2
0
        public async Task <IReadOnlyCollection <T> > Get(string streamName, CancellationToken cancellationToken)
        {
            var stream = _eventStoreClient.ReadStreamAsync(Direction.Forwards, streamName, StreamPosition.Start,
                                                           cancellationToken: cancellationToken);

            if (await stream.ReadState == ReadState.StreamNotFound)
            {
                return(null);
            }

            var resolvedEvents = await stream
                                 .ToListAsync(cancellationToken);

            var events = resolvedEvents
                         .Select(async @event => await _eventStoreDbSerializer.Deserialize(@event.Event));

            var deserializedEvents = await Task.WhenAll(events);

            return((IReadOnlyCollection <T>)deserializedEvents.ToList().AsReadOnly());
        }