Ejemplo n.º 1
0
        public static AggregateRepository New(string akkaWriteDbConnectionString, EventsAdaptersCatalog upgradeCatalog = null)
        {
            var rawSqlAkkaPersistenceRepository = new RawJournalRepository(akkaWriteDbConnectionString);
            var domainEventsRepository          = new DomainEventsRepository(rawSqlAkkaPersistenceRepository);

            return(new AggregateRepository(domainEventsRepository, upgradeCatalog));
        }
        public static ActorSystemEventRepository New(IActorSystemFactory factory, EventsAdaptersCatalog eventsAdaptersCatalog)
        {
            var actorSystem = factory.Create();

            actorSystem.InitDomainEventsSerialization(eventsAdaptersCatalog);
            return(new ActorSystemEventRepository(actorSystem));
        }
Ejemplo n.º 3
0
        public static AggregateRepository New(string akkaWriteDbConnectionString, EventsAdaptersCatalog upgradeCatalog = null)
        {
            var options = new DbContextOptionsBuilder().UseSqlServer(akkaWriteDbConnectionString).Options;
            var rawSqlAkkaPersistenceRepository = new RawJournalRepository(options);
            var domainEventsRepository          = new DomainEventsRepository(rawSqlAkkaPersistenceRepository);

            return(new AggregateRepository(domainEventsRepository, upgradeCatalog));
        }
Ejemplo n.º 4
0
        public static ActorSystemEventRepository New(AkkaConfiguration conf, EventsAdaptersCatalog eventsAdaptersCatalog)
        {
            var actorSystem = conf.CreateSystem();

            actorSystem.InitDomainEventsSerialization(eventsAdaptersCatalog);

            return(new ActorSystemEventRepository(actorSystem));
        }
Ejemplo n.º 5
0
        public void When_updating_single_event_Tests()
        {
            var chain = new EventsAdaptersCatalog();

            chain.Register(new DomainEventUpdater3());
            var balanceAggregate = new BalanceAggregate(Guid.NewGuid(), 10);

            _initialEvent = new TestEvent_V2(balanceAggregate.Id);
            _resultEvent  = chain.Update(_initialEvent).OfType <TestEvent_V3>();
        }
        public void When_updating_single_event_Tests()
        {
            var chain = new EventsAdaptersCatalog();

            chain.Register(new DomainEventUpdater1());
            chain.Register(new DomainEventUpdater2());

            var balanceAggregate = new BalanceAggregate(Guid.NewGuid(), 10);

            _initialEvent = new TestEvent(balanceAggregate.Id);
            _resultEvent  = chain.Update(_initialEvent).FirstOrDefault() as TestEvent_V2;
        }
Ejemplo n.º 7
0
        public async Task Start()
        {
            Log.Information("Starting GridDomain node {Id}", Id);

            _stopping             = false;
            EventsAdaptersCatalog = new EventsAdaptersCatalog();
            _containerBuilder     = new ContainerBuilder();

            System = _actorSystemFactory.Create();
            System.RegisterOnTermination(OnSystemTermination);

            System.InitLocalTransportExtension();
            Transport = System.GetTransport();

            _containerBuilder.Register(new GridNodeContainerConfiguration(Transport, Log));
            _waiterFactory = new MessageWaiterFactory(System, Transport, DefaultTimeout);

            Initializing.Invoke(this, this);

            System.InitDomainEventsSerialization(EventsAdaptersCatalog);

            ActorTransportProxy = System.ActorOf(Props.Create(() => new LocalTransportProxyActor()), nameof(ActorTransportProxy));

            //var appInsightsConfig = AppInsightsConfigSection.Default ?? new DefaultAppInsightsConfiguration();
            //var perfCountersConfig = AppInsightsConfigSection.Default ?? new DefaultAppInsightsConfiguration();
            //
            //if(appInsightsConfig.IsEnabled)
            //{
            //    var monitor = new ActorAppInsightsMonitor(appInsightsConfig.Key);
            //    ActorMonitoringExtension.RegisterMonitor(System, monitor);
            //}
            //if(perfCountersConfig.IsEnabled)
            //    ActorMonitoringExtension.RegisterMonitor(System, new ActorPerformanceCountersMonitor());

            _commandExecutor = await CreateCommandExecutor();

            _containerBuilder.RegisterInstance(_commandExecutor);

            var domainBuilder = CreateDomainBuilder();

            domainBuilder.Configure(_containerBuilder);

            Container = _containerBuilder.Build();
            System.AddDependencyResolver(new AutoFacDependencyResolver(Container, System));
            domainBuilder.Configure(Pipe);
            var nodeController = System.ActorOf(Props.Create(() => new GridNodeController(Pipe.CommandExecutor, ActorTransportProxy)), nameof(GridNodeController));

            await nodeController.Ask <GridNodeController.Alive>(GridNodeController.HeartBeat.Instance);

            Log.Information("GridDomain node {Id} started at home {Home}", Id, System.Settings.Home);
        }
Ejemplo n.º 8
0
        public static DomainEventsJsonSerializationExtension InitDomainEventsSerialization(
            this ActorSystem system,
            EventsAdaptersCatalog eventAdapters
            )
        {
            if (system == null)
            {
                throw new ArgumentNullException(nameof(system));
            }

            var ext = (DomainEventsJsonSerializationExtension)system.RegisterExtension(DomainEventsJsonSerializationExtensionProvider.Provider);

            ext.Converters           = eventAdapters.JsonConverters;
            ext.EventsAdapterCatalog = eventAdapters;
            return(ext);
        }
Ejemplo n.º 9
0
        public void When_updating_single_event_Tests()
        {
            var chain = new EventsAdaptersCatalog();

            chain.Register(new DomainEventUpdater3());
            var balanceAggregate = new BalanceAggregate(Guid.NewGuid(), 10);

            _initialEvent = new TestEvent_V2(balanceAggregate.Id);
            _resultEvent  = chain.Update(_initialEvent).OfType <TestEvent_V3>();

            //Events_type_was_updated()
            Assert.IsAssignableFrom <TestEvent_V3>(_resultEvent.FirstOrDefault());
            //All_events_were_produced()
            Assert.Equal(2, _resultEvent.Count());
            //Event_id_was_remained()
            Assert.True(_resultEvent.All(e => e.SourceId == _initialEvent.SourceId));
        }
        public void When_updating_single_event_Tests()
        {
            var chain = new EventsAdaptersCatalog();

            chain.Register(new DomainEventUpdater1());
            chain.Register(new DomainEventUpdater2());

            var balanceAggregate = new BalanceAggregate(Guid.NewGuid(), 10);

            _initialEvent = new TestEvent(balanceAggregate.Id);
            _resultEvent  = chain.Update(_initialEvent).FirstOrDefault() as TestEvent_V2;
            // Event_type_was_updated()
            Assert.IsAssignableFrom <TestEvent_V2>(_resultEvent);
            //Event_id_was_remained()
            Assert.Equal(_initialEvent.SourceId, _resultEvent.SourceId);
            //Event_Field_was_remained()
            Assert.Equal(_initialEvent.Field, _resultEvent.Field3);
        }
Ejemplo n.º 11
0
 public AggregateRepository(IRepository <DomainEvent> eventRepository,
                            EventsAdaptersCatalog eventsAdaptersCatalog = null)
 {
     _eventsAdaptersCatalog = eventsAdaptersCatalog ?? new EventsAdaptersCatalog();
     _eventRepository       = eventRepository;
 }