Exemple #1
0
        CommandProcessor GetCommandProcessor(bool useCaching)
        {
            var eventStore = new MongoDbEventStore(_database, "events");

            _timeTaker = new TimeTaker
            {
                InnerEventStore = eventStore,
            };

            var serializer = new JsonDomainEventSerializer();

            IAggregateRootRepository aggregateRootRepository = new DefaultAggregateRootRepository(_timeTaker, serializer, _domainTypeNameMapper);

            if (useCaching)
            {
                aggregateRootRepository = new CachingAggregateRootRepositoryDecorator(aggregateRootRepository, new InMemorySnapshotCache { ApproximateMaxNumberOfCacheEntries = 100 }, eventStore, serializer);
            }

            _timeTaker.InnerAggregateRootRepository = aggregateRootRepository;

            var eventDispatcher = new ViewManagerEventDispatcher(_timeTaker, eventStore, serializer, _domainTypeNameMapper);

            var commandProcessor = new CommandProcessor(_timeTaker, _timeTaker, eventDispatcher, serializer, _commandMapper, _domainTypeNameMapper, new Options());

            RegisterForDisposal(commandProcessor);

            return commandProcessor;
        }
        public void CanDoTheThing(int numberOfCommandsToProcess)
        {
            var database = MongoHelper.InitializeTestDatabase();
            var profiler = new MyProfiler();

            using (var timer = new Timer(1000))
            {
                var commandCounter = 0;

                timer.Elapsed += (o, ea) =>
                {
                    var numberOfCommands = Interlocked.Exchange(ref commandCounter, 0);
                    Console.WriteLine("{0} commands/s", numberOfCommands);
                };

                timer.Start();

                //Brett
                var commandProcessor = RegisterForDisposal(base.CreateCommandProcessor(config => config
                                                                                       .Logging(l => l.UseConsole(minLevel: Logger.Level.Warn))
                                                                                       .EventStore(e => e.UseMongoDb(database, "Events"))
                                                                                       .AggregateRootRepository(e => e.EnableInMemorySnapshotCaching(1000)) // try commenting this line in/out
                                                                                       .EventDispatcher(e => e.UseViewManagerEventDispatcher())
                                                                                       .Options(o => { o.AddProfiler(profiler); o.SetMaxRetries(0); })
                                                                                       ));

                //orig
                //var commandProcessor = RegisterForDisposal(
                //    CommandProcessor.With()
                //        .Logging(l => l.UseConsole(minLevel: Logger.Level.Warn))
                //        .EventStore(e => e.UseMongoDb(database, "Events"))

                //        // try commenting this line in/out
                //        .AggregateRootRepository(e => e.EnableInMemorySnapshotCaching(1000))

                //        .EventDispatcher(e => e.UseViewManagerEventDispatcher())
                //        .Options(o =>
                //        {
                //            o.AddProfiler(profiler);
                //            o.SetMaxRetries(0);
                //        })
                //        .Create()
                //    );

                numberOfCommandsToProcess.Times(() =>
                {
                    commandProcessor.ProcessCommand(new MakeStuffHappen("id"));
                    Interlocked.Increment(ref commandCounter);
                });

                var repo         = new DefaultAggregateRootRepository(new MongoDbEventStore(database, "Events"), new JsonDomainEventSerializer(), new DefaultDomainTypeNameMapper());
                var currentState = (Root)repo.Get <Root>("id", new ConsoleOutUnitOfWork(repo));

                Assert.That(currentState.HowManyThingsHaveHappened, Is.EqualTo(numberOfCommandsToProcess));
            }

            Console.WriteLine(profiler);
        }
Exemple #3
0
        static InMemoryUnitOfWork GetUnitOfWork()
        {
            var serializer = new JsonDomainEventSerializer();
            var mapper     = new DefaultDomainTypeNameMapper();
            var eventStore = new InMemoryEventStore(serializer);
            var repository = new DefaultAggregateRootRepository(eventStore, serializer, mapper);

            return(new InMemoryUnitOfWork(repository, mapper));
        }
        protected override void DoSetUp()
        {
            _eventStore = new InMemoryEventStore();
            Func <Type, AggregateRoot> aggregateRootFactoryMethod = t =>
            {
                Assert.AreEqual(typeof(Root), t);
                return(new Root());
            };

            _repository = new FactoryBasedAggregateRootRepository(_eventStore, _domainEventSerializer, _defaultDomainTypeNameMapper, aggregateRootFactoryMethod);
        }
Exemple #5
0
        protected override void DoSetUp()
        {
            _eventStore            = new MongoDbEventStore(MongoHelper.InitializeTestDatabase(), "Events");
            _domainEventSerializer = new JsonDomainEventSerializer();

            _domainTypeNameMapper = new DefaultDomainTypeNameMapper();

            var snapshotCache = new InMemorySnapshotCache();

            _realAggregateRootRepository    = new DefaultAggregateRootRepository(_eventStore, _domainEventSerializer, _domainTypeNameMapper);
            _cachingAggregateRootRepository = new CachingAggregateRootRepositoryDecorator(_realAggregateRootRepository, snapshotCache, _eventStore, _domainEventSerializer);
        }
        protected override void DoSetUp()
        {
            _cirqus = CreateCommandProcessor(config => config
                                             .EventStore(e => e.UseInMemoryEventStore())
                                             .AggregateRootRepository(e => e.Register <IAggregateRootRepository>(c =>
            {
                _aggregateRootRepository = new DefaultAggregateRootRepository(c.GetService <IEventStore>(), c.GetService <IDomainEventSerializer>(), c.GetService <IDomainTypeNameMapper>());

                return(_aggregateRootRepository);
            }))
                                             .EventDispatcher(e => e.UseConsoleOutEventDispatcher()));

            RegisterForDisposal(_cirqus);
        }
 protected override void DoSetUp()
 {
     _eventStore = new InMemoryEventStore();
     _repository = new DefaultAggregateRootRepository(_eventStore, _domainEventSerializer, _defaultDomainTypeNameMapper);
 }
Exemple #8
0
 public DefaultAggregateRootRepositoryFactory()
 {
     _eventStore = new MongoDbEventStore(MongoHelper.InitializeTestDatabase(), "events");
     _defaultAggregateRootRepository = new DefaultAggregateRootRepository(_eventStore, _domainEventSerializer, _defaultDomainTypeNameMapper);
 }