コード例 #1
0
        public RetrySubscriptionTests()
        {
            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> .Ignored, A <string> .Ignored, A <string> .Ignored)).Returns(eventSubscription);

            sut = new RetrySubscription(eventStore, eventSubscriber, streamFilter, null)
            {
                ReconnectWaitMs = 50
            };

            sutSubscriber = sut;
        }
コード例 #2
0
        public EventConsumerGrainTests()
        {
            grainState.Value.Position = initialPosition;

            consumerName = eventConsumer.GetType().Name;

            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> ._, A <string> ._, A <string> ._))
            .Returns(eventSubscription);

            A.CallTo(() => eventConsumer.Name)
            .Returns(consumerName);

            A.CallTo(() => eventConsumer.Handles(A <StoredEvent> ._))
            .Returns(true);

            A.CallTo(() => formatter.Parse(eventData))
            .Returns(envelope);

            sut = new MyEventConsumerGrain(
                x => eventConsumer,
                grainState,
                eventStore,
                formatter,
                log);
        }
コード例 #3
0
        public RetrySubscriptionTests()
        {
            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> ._, A <string> ._, A <string> ._))
            .Returns(eventSubscription);

            A.CallTo(() => eventSubscription.Sender)
            .Returns(eventSubscription);

            sut = new RetrySubscription(eventSubscriber, s => eventStore.CreateSubscription(s))
            {
                ReconnectWaitMs = 50
            };

            sutSubscriber = sut;
        }
コード例 #4
0
 private void Subscribe()
 {
     if (currentSubscription == null)
     {
         currentSubscription = eventStore.CreateSubscription(this, streamFilter, position);
     }
 }
コード例 #5
0
        public EventConsumerGrainTests()
        {
            state.Position = initialPosition;

            consumerName = eventConsumer.GetType().Name;

            A.CallTo(() => store.WithSnapshots(A <Type> .Ignored, consumerName, A <Func <EventConsumerState, Task> > .Ignored))
            .Invokes(new Action <Type, string, Func <EventConsumerState, Task> >((t, key, a) =>
            {
                apply = a;
            }))
            .Returns(persistence);

            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> .Ignored, A <string> .Ignored, A <string> .Ignored))
            .Returns(eventSubscription);

            A.CallTo(() => eventConsumer.Name)
            .Returns(consumerName);

            A.CallTo(() => persistence.ReadAsync(EtagVersion.Any))
            .Invokes(new Action <long>(s => apply(state)));

            A.CallTo(() => persistence.WriteSnapshotAsync(A <EventConsumerState> .Ignored))
            .Invokes(new Action <EventConsumerState>(s => state = s));

            A.CallTo(() => formatter.Parse(eventData, null))
            .Returns(envelope);

            sut = new MyEventConsumerGrain(
                x => eventConsumer,
                store,
                eventStore,
                formatter,
                log);
        }
コード例 #6
0
        public EventConsumerGrainTests()
        {
            state.Position = initialPosition;

            consumerName = eventConsumer.GetType().Name;

            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> .Ignored, A <string> .Ignored, A <string> .Ignored))
            .Returns(eventSubscription);

            A.CallTo(() => eventConsumer.Name).
            Returns(consumerName);

            A.CallTo(() => stateHolder.State)
            .ReturnsLazily(() => state);

            A.CallToSet(() => stateHolder.State)
            .Invokes(new Action <EventConsumerState>(s => state = s));

            A.CallTo(() => formatter.Parse(eventData, true)).Returns(envelope);

            sut           = new MyEventConsumerGrain(formatter, eventStore, log);
            sutSubscriber = sut;

            sut.ActivateAsync(stateHolder).Wait();
        }
コード例 #7
0
        private Task SubscribeThisAsync(string position)
        {
            if (eventSubscription == null)
            {
                eventSubscription = eventStore.CreateSubscription(this, eventConsumer.EventsFilter, position);
            }

            return(TaskHelper.Done);
        }
コード例 #8
0
        public EventConsumerGrainTests()
        {
            grainState.Value = new EventConsumerState
            {
                Position = initialPosition
            };

            consumerName = eventConsumer.GetType().Name;

            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> ._, A <string> ._, A <string> ._))
            .Returns(eventSubscription);

            A.CallTo(() => eventConsumer.Name)
            .Returns(consumerName);

            A.CallTo(() => eventConsumer.Handles(A <StoredEvent> ._))
            .Returns(true);

            A.CallTo(() => eventConsumer.On(A <IEnumerable <Envelope <IEvent> > > ._))
            .Invokes((IEnumerable <Envelope <IEvent> > events) =>
            {
                foreach (var @event in events)
                {
                    eventConsumer.On(@event).Wait();
                }
            });

            A.CallTo(() => eventSubscription.Sender)
            .Returns(eventSubscription);

            storedEvent = new StoredEvent("Stream", Guid.NewGuid().ToString(), 123, eventData);

            A.CallTo(() => formatter.ParseIfKnown(storedEvent))
            .Returns(envelope);

            var log = A.Fake <ILogger <EventConsumerGrain> >();

            sut = new MyEventConsumerGrain(
                x => eventConsumer,
                grainState,
                eventStore,
                formatter,
                log);
        }
コード例 #9
0
        public EventConsumerActorTests()
        {
            consumerInfo.Position = Guid.NewGuid().ToString();
            consumerName          = eventConsumer.GetType().Name;

            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> .Ignored, A <string> .Ignored, A <string> .Ignored)).Returns(eventSubscription);

            A.CallTo(() => eventConsumer.Name).Returns(consumerName);
            A.CallTo(() => eventConsumerInfoRepository.FindAsync(consumerName)).Returns(consumerInfo);

            A.CallTo(() => formatter.Parse(eventData, true)).Returns(envelope);

            sut = new EventConsumerActor(formatter, eventStore, eventConsumerInfoRepository, log)
            {
                ReconnectWaitMs = 0
            };

            sutActor      = sut;
            sutSubscriber = sut;
        }
コード例 #10
0
        public EventConsumerGrainTests()
        {
            grainState.Value = new EventConsumerState
            {
                Position = initialPosition
            };

            consumerName = eventConsumer.GetType().Name;

            A.CallTo(() => eventStore.CreateSubscription(A <IEventSubscriber> ._, A <string> ._, A <string> ._))
            .Returns(eventSubscription);

            A.CallTo(() => eventConsumer.Name)
            .Returns(consumerName);

            A.CallTo(() => eventConsumer.Handles(A <StoredEvent> ._))
            .Returns(true);

            A.CallTo(() => eventConsumer.On(A <IEnumerable <Envelope <IEvent> > > ._))
            .Invokes((IEnumerable <Envelope <IEvent> > events) =>
            {
                foreach (var @event in events)
                {
                    eventConsumer.On(@event).Wait();
                }
            });

            A.CallTo(() => eventSubscription.Sender)
            .Returns(eventSubscription);

            A.CallTo(() => formatter.ParseIfKnown(A <StoredEvent> .That.Matches(x => x.Data == eventData)))
            .Returns(envelope);

            sut = new MyEventConsumerGrain(
                x => eventConsumer,
                grainState,
                eventStore,
                formatter,
                log);
        }
コード例 #11
0
ファイル: EventReceiver.cs プロジェクト: israrface44/squidex
        private async Task SubscribeAsync(IEventConsumer eventConsumer, string position)
        {
            var consumerName = eventConsumer.Name;

            var subscription = eventStore.CreateSubscription(eventConsumer.EventsFilter, position);

            await subscription.SubscribeAsync(async storedEvent =>
            {
                await DispatchConsumerAsync(ParseEvent(storedEvent), eventConsumer, eventConsumer.Name);

                await eventConsumerInfoRepository.SetPositionAsync(eventConsumer.Name, storedEvent.EventPosition, false);
            }, async exception =>
            {
                await eventConsumerInfoRepository.StopAsync(consumerName, exception.ToString());

                subscription.Dispose();
            });

            currentSubscription = subscription;
        }
コード例 #12
0
 protected override IEventSubscription CreateSubscription(IEventStore store, IEventSubscriber subscriber, string streamFilter, string position)
 {
     return(store.CreateSubscription(subscriber, streamFilter, position));
 }
コード例 #13
0
 protected override IEventSubscription CreateSubscription(IEventStore eventStore, string streamFilter, string position)
 {
     return(eventStore.CreateSubscription(this, streamFilter, position));
 }