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); }
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); }
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); }
public DefaultAggregateRootRepositoryFactory() { _eventStore = new MongoDbEventStore(MongoHelper.InitializeTestDatabase(), "events"); _defaultAggregateRootRepository = new DefaultAggregateRootRepository(_eventStore, _domainEventSerializer, _defaultDomainTypeNameMapper); }