コード例 #1
0
 public void SetUp()
 {
     streamId = Guid.NewGuid().ToString();
     store    = TestEventStore.Create();
     store.Populate(streamId);
     stream = NEventStoreStream.ByAggregate(store, streamId);
 }
コード例 #2
0
        public void SetUp()
        {
            // populate the event store
            store = TestEventStore.Create();

            streamId = Guid.NewGuid().ToString();

            store.WriteEvents(streamId);

            stream = NEventStoreStream.ByAggregate(store, streamId).DomainEvents();
        }
コード例 #3
0
        public async Task A_partitioned_stream_can_be_mapped_at_query_time()
        {
            for (var i = 1; i <= 9; i++)
            {
                store.WriteEvents(
                    streamId: Guid.NewGuid().ToString(),
                    howMany: 10,
                    bucketId: i.ToString());
            }

            var partitionedStream = Stream.Partitioned <EventMessage, int, string>(async(q, p) =>
            {
                var bucketId          = ((IStreamQueryValuePartition <string>)p).Value;
                var streamsToSnapshot = store.Advanced.GetStreamsToSnapshot(bucketId, 0);
                var streamId          = streamsToSnapshot.Select(s => s.StreamId).Single();
                var stream            = NEventStoreStream.ByAggregate(store, streamId, bucketId);
                var batch             = await stream.CreateQuery(q.Cursor, q.BatchSize).NextBatch();
                return(batch);
            }).Trace();

            var domainEvents = partitionedStream.Map(es => es.Select(e => e.Body).OfType <IDomainEvent>());

            // catch up
            var catchup = domainEvents.DistributeAmong(Enumerable.Range(1, 10)
                                                       .Select(i => Partition.ByValue(i.ToString())),
                                                       batchSize: 2);

            var receivedEvents = new ConcurrentBag <IDomainEvent>();

            catchup.Subscribe(async b =>
            {
                foreach (var e in b)
                {
                    receivedEvents.Add(e);
                }
            });

            await catchup.RunUntilCaughtUp().Timeout();

            receivedEvents.Count().Should().Be(90);
        }
コード例 #4
0
 public IStream <IDomainEvent, int> Open(string streamId)
 {
     return(NEventStoreStream.ByAggregate(store, streamId).DomainEvents());
 }