public static EventStoreStatefulActorBuilder <TActor, TAggregate, TRegistry> Create( ClusterVNode clusterVNode, ConnectionSettings connectionSettings, IActorConfiguration actorConfiguration, ILoggerFactory?loggerFactory = null, Action <IEventStoreRepositoryConfiguration>?eventStoreRepositoryConfigurationBuilder = null) { var connection = EmbeddedEventStoreConnection.Create(clusterVNode, connectionSettings); var connectionMonitor = new EventStoreConnectionStatusMonitor(connection, loggerFactory); loggerFactory ??= new DummyLoggerFactory(); var eventStoreRepositoryConfiguration = new EventStoreRepositoryConfiguration(); eventStoreRepositoryConfigurationBuilder?.Invoke(eventStoreRepositoryConfiguration); var eventStoreRepository = new EventStoreAggregateRepository( eventStoreRepositoryConfiguration, connection, connectionMonitor, loggerFactory); var builder = new EventStoreStatefulActorBuilder <TActor, TAggregate, TRegistry>(actorConfiguration, eventStoreRepository, connectionMonitor, loggerFactory); return(builder); }
static async Task Main(string[] args) { int DEFAULT_PORT = 1113; UserCredentials credentials = new UserCredentials("admin", "changeit"); var settings = ConnectionSettings.Create() .SetDefaultUserCredentials(credentials) .UseConsoleLogger() .Build(); var eventStoreConnection = EventStoreConnection.Create(settings, new IPEndPoint(IPAddress.Loopback, DEFAULT_PORT)); await eventStoreConnection.ConnectAsync(); var eventStoreAggregateRepository = new EventStoreAggregateRepository <TodoAggregateRoot>(eventStoreConnection); IAggregateFactory factory = new AggregateFactory(); var aggregateId = Guid.NewGuid(); var agg = factory.Create <TodoAggregateRoot>(); agg.Create(aggregateId, "My List"); agg.AddTask(Guid.NewGuid(), "get 1 egg"); agg.AddTask(Guid.NewGuid(), "get milk"); agg.AddTask(Guid.NewGuid(), "dry clothes"); agg.AddTask(Guid.NewGuid(), "solve world hunger"); await eventStoreAggregateRepository.SaveAsync(agg); var aggregate = await eventStoreAggregateRepository.GetAsync(agg.AggregateId); Console.WriteLine(JsonConvert.SerializeObject(aggregate, Formatting.Indented)); }
protected override void InitRepository() { _eventStore = new EmbeddedEventStore(11113, 12113); _eventStore.Start(); _connection = EmbeddedEventStoreConnection.Create(_eventStore.Node); _connection.ConnectAsync().Wait(); RepoUnderTest = new EventStoreAggregateRepository(_connection); }
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(); }
private static EventStoreStatelessActorBuilder <TActor, TRegistry> CreateInternal( IActorConfiguration actorConfiguration, IEventStoreConnection eventStoreConnection, ILoggerFactory loggerFactory = null, Action <IEventStoreRepositoryConfiguration> eventStoreRepositoryConfigurationBuilder = null) { loggerFactory ??= new DummyLoggerFactory(); var eventStoreRepositoryConfiguration = new EventStoreRepositoryConfiguration(); eventStoreRepositoryConfigurationBuilder?.Invoke(eventStoreRepositoryConfiguration); var connectionMonitor = new EventStoreConnectionStatusMonitor(eventStoreConnection, loggerFactory); var eventStoreRepository = new EventStoreAggregateRepository( eventStoreRepositoryConfiguration, eventStoreConnection, connectionMonitor, loggerFactory); var builder = new EventStoreStatelessActorBuilder <TActor, TRegistry>(actorConfiguration, eventStoreRepository, connectionMonitor, loggerFactory); return(builder); }
public EventStoreAggregateRepositoryTests() { var ltr = LogicalTypeRegistryBuilder.Build(); Repo = new EventStoreAggregateRepository<ServiceCase, ServiceCaseId>(ltr, () => EventStoreConnection.Create(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1113))); }