public async Task ShouldBuildFromActorBuilderAndRunActors() { var testActorAutoBuildOne = EventStoreEmbeddedStatelessActorBuilder <TestActorAutoBuildOne, SomeRegistry> .Create(_clusterVNode, _connectionSettings, ActorConfiguration.Default, _loggerFactory) .WithBus <IEventStoreBus>((actor, bus) => { actor.SubscribeFromEndToAllStreams(); actor.SubscribeToPersistentSubscriptionStream(_streamId2, _groupIdOne); }) .Build(); var testActorAutoBuildTwo = EventStoreEmbeddedStatelessActorBuilder <TestActorAutoBuildOne, SomeRegistry> .Create(_clusterVNode, _connectionSettings, ActorConfiguration.Default, _loggerFactory) .WithBus <IEventStoreBus>((actor, bus) => { actor.SubscribeFromEndToAllStreams(); }) .Build(); await Task.Delay(1000); await testActorAutoBuildTwo.EmitEventStore(new SomeMoreData(_correlationId, "some-stream")); await Task.Delay(2000); Assert.AreEqual(1, testActorAutoBuildOne.Events.Count); await testActorAutoBuildTwo.EmitEventStore(new SomeMoreData(_correlationId, _streamId2)); await Task.Delay(1000); Assert.AreEqual(3, testActorAutoBuildOne.Events.Count); testActorAutoBuildOne.Dispose(); testActorAutoBuildTwo.Dispose(); }
public async Task ShouldRegisterTwoBusAndHandleEventsFromDifferentSources() { var testBusRegistrationActor = EventStoreEmbeddedStatelessActorBuilder <TestBusRegistrationStatelessActor, DummyBusRegistry> .Create(_clusterVNode, _connectionSettings, ActorConfiguration.Default, _loggerFactory) .WithBus <IDummyBus>((actor, bus) => { actor.SubscribeDummyBus("somesubject"); }) .WithBus <IDummyBus2>((actor, bus) => { actor.SubscribeDummyBus2("someothersubject"); }) .Build(); var dummyBus = testBusRegistrationActor.GetConnectedBus <IDummyBus>(); var dummyBus2 = testBusRegistrationActor.GetConnectedBus <IDummyBus2>(); dummyBus.Push(new SomeData("entity", Guid.NewGuid())); dummyBus2.Push(new SomeData("entity2", Guid.NewGuid())); await Task.Delay(200); Assert.AreEqual(2, testBusRegistrationActor.Events.Count); testBusRegistrationActor.Dispose(); }
public static void Run() { var clusterVNode = EmbeddedVNodeBuilder .AsSingleNode() .RunInMemory() .StartStandardProjections() .WithWorkerThreads(1) .Build(); clusterVNode.StartAsync(true).Wait(); CreateSubscriptionGroups(clusterVNode).Wait(); var eventCountActorOne = EventStoreEmbeddedStatelessActorBuilder <EventCountStatelessActor, DemoSystemRegistry> .Create(clusterVNode, Do.GetConnectionSettings(), ActorConfiguration.Default) .WithBus <IEventStoreBus>((actor, bus) => { actor.SubscribeToPersistentSubscriptionStream(StaticData.PersistentStreamOne, StaticData.GroupIdOne); }) .Build(); var eventCountActorTwo = EventStoreEmbeddedStatelessActorBuilder <EventCountStatelessActor, DemoSystemRegistry> .Create(clusterVNode, Do.GetConnectionSettings(), ActorConfiguration.Default) .WithBus <IEventStoreBus>((actor, bus) => { actor.SubscribeToPersistentSubscriptionStream(StaticData.PersistentStreamOne, StaticData.GroupIdOne); }) .Build(); var position = 0; while (true) { if (position == 0) { Console.WriteLine("Press enter to generate random event..."); } Console.ReadLine(); Console.WriteLine($"Generating {nameof(EventCountOne)} for stream {StaticData.PersistentStreamOne}"); eventCountActorOne.EmitEventStore(new EventCountOne(position++, StaticData.PersistentStreamOne, Guid.NewGuid())).Wait(); } }
public async Task ShouldRegisterOneBusAndHandleEventsFromDifferentSources() { var testBusRegistrationActor = EventStoreEmbeddedStatelessActorBuilder <TestBusRegistrationStatelessActor, DummyBusRegistry> .Create(_clusterVNode, _connectionSettings, ActorConfiguration.Default, _loggerFactory) .WithBus <IEventStoreBus>((actor, bus) => actor.SubscribeFromEndToAllStreams()) .WithBus <IDummyBus>((actor, bus) => { actor.SubscribeDummyBus("somesubject"); }) .Build(); await Task.Delay(500); var eventStoreRepositoryConfiguration = new EventStoreRepositoryConfiguration(); var connection = EmbeddedEventStoreConnection.Create(_clusterVNode, _connectionSettings); var connectionMonitor = new EventStoreConnectionStatusMonitor(connection, _loggerFactory); var eventStoreRepository = new EventStoreAggregateRepository( eventStoreRepositoryConfiguration, connection, connectionMonitor, _loggerFactory); var dummyBus = testBusRegistrationActor.GetConnectedBus <IDummyBus>(); dummyBus.Push(new SomeData("entity", Guid.NewGuid())); await eventStoreRepository.Emit(new SomeData("thisisit", Guid.NewGuid())); await Task.Delay(500); Assert.AreEqual(2, testBusRegistrationActor.Events.Count); Assert.True(testBusRegistrationActor.Events.Any(ev => ev.EntityId == "thisisit")); testBusRegistrationActor.Dispose(); }
static void Main(string[] args) { //var dispatchQueue = new DispatchQueue<int>(new DispatchQueueConfiguration<int>((i=> //{ // throw new Exception("boom"); //}),1,1)); //dispatchQueue.Enqueue(1); Task.Run(() => { var connectionSettings = StaticData.GetConnectionSettings(); var tradeDataEventProvider = new DefaultEventTypeProvider <Trade>(() => new[] { typeof(TradeCreated), typeof(TradeStatusChanged) }); var marketDataEventProvider = new DefaultEventTypeProvider <MarketData>(() => new[] { typeof(MarketDataChanged) }); var tradeService = EventStoreEmbeddedStatelessActorBuilder <TradeService, DemoSystemRegistry> .Create(StaticData.ClusterVNode, connectionSettings, ActorConfiguration.Default) .WithBus <IEventStoreBus>((actor, bus) => { actor.SubscribeFromEndToAllStreams(); }) .Build(); var tradePriceUpdateService = EventStoreEmbeddedStatefulActorBuilder <TradePriceUpdateService, Trade, DemoSystemRegistry> .Create(StaticData.ClusterVNode, connectionSettings, ActorConfiguration.Default) .WithReadAllFromStartCache(eventTypeProvider: tradeDataEventProvider) .WithBus <IEventStoreBus>((actor, bus) => { actor.SubscribeFromEndToAllStreams(); }) .WithBus <IMarketDataBus>((actor, bus) => { actor.SubscribeMarketDataBus(); }) .Build(); var tradeSink = EventStoreEmbeddedStatefulActorBuilder <TradeSink, Trade, DemoSystemRegistry> .Create(StaticData.ClusterVNode, connectionSettings, ActorConfiguration.Default) .WithReadAllFromStartCache(eventTypeProvider: tradeDataEventProvider) .Build(); var marketDataSink = StatelessActorBuilder <MarketDataSink, DemoSystemRegistry> .Create(ActorConfiguration.Default) .WithBus <IMarketDataBus>((actor, bus) => { actor.SubscribeMarketDataBus(); }) .Build(); var marketDataCache = marketDataSink.CurrentPrices.Connect(); var tradeCache = tradeSink.State.AsObservableCache().Connect(); tradeCache.PrintTradeChanges(); marketDataCache.PrintMarketDataChanges(); }); Console.Read(); }