예제 #1
0
파일: Bootstrapper.cs 프로젝트: trbngr/m-r
        private static CqrsEngineHost ConfigureHost()
        {
            var builder = new CqrsEngineBuilder();

             builder.Domain(d =>
             {
                 d.InAssemblyOf<CreateInventoryItem>();
                 d.HandlerSample<IConsume<Define.Command>>(m => m.Consume(null));
             });

             builder.File(f =>
             {
                 f.AddFileSender(storageConfig, "events");
                 f.AddFileProcess(storageConfig, "commands", p =>
                 {
                     p.WhereFilter(x => x.WhereMessagesAre<Define.Command>());
                     p.DispatchAsCommandBatch();
                 });
                 f.AddFileProcess(storageConfig, "events", p=>
                 {
                     p.WhereFilter(x => x.WhereMessagesAre<DomainEvent>());
                     p.DispatchAsEvents();
                 });
             });

             builder.Storage(s =>
             {
                 s.TapeIsInFiles(Path.Combine(storageConfig.Folder.FullName, "eventstore"));
                 s.AtomicIsInFiles(storageConfig.Folder.FullName, b =>
                 {
                     b.WhereEntityIs<IEntity>();
                     b.WhereSingletonIs<ISingleton>();
                 });
                 s.StreamingIsInFiles(storageConfig.Folder.FullName);
             });

             builder.Advanced.ConfigureContainer(c =>
             {
                 c.RegisterType<ReadModelFacade>().As<IReadModelFacade>();

                 c.RegisterType<Repository<InventoryItem>>().As<IRepository<InventoryItem>>();

                 c.RegisterType<EventStore>().As<IEventStore>();
             });

             return builder.Build();
        }