Exemplo n.º 1
0
        public static CqrsEngineBuilder Configure()
        {
            var builder = new CqrsEngineBuilder();

            builder.UseProtoBufSerialization();
            builder.Domain(d => d.HandlerSample<IConsume<IMessage>>(m => m.Consume(null)));

            var connection = AzureSettingsProvider.GetString("DiagnosticsConnectionString");
            var storageConfig = AzureStorage.CreateConfig(CloudStorageAccount.Parse(connection), c =>
            {
                c.ConfigureBlobClient(x => x.ReadAheadInBytes = 0x200000L);
                c.Named("dev");
            });

            builder.Azure(m =>
                {
                    m.AddAzureSender(storageConfig, "sample-02");

                    m.AddAzureProcess(storageConfig, "sample-02", x =>
                    {
                        x.DirectoryFilter(f => f.WhereMessagesAre<IMessage>());
                        x.DispatchAsEvents();
                    });
                });

            builder.Advanced.ConfigureContainer(WireTasks);

            return builder;
        }
Exemplo n.º 2
0
        public static CqrsEngineBuilder Configure()
        {
            // for more detail about this sample see:
            // http://code.google.com/p/lokad-cqrs/wiki/GuidanceSeries

            var builder = new CqrsEngineBuilder();

            builder.UseProtoBufSerialization();
            builder.Domain(d => d.HandlerSample<IConsume<IMessage>>(m => m.Consume(null)));

            var connection = AzureSettingsProvider.GetString("StorageConnectionString");
            var storageConfig = AzureStorage.CreateConfig(CloudStorageAccount.Parse(connection), c =>
            {
                c.ConfigureBlobClient(x => x.ReadAheadInBytes = 0x200000L);
                c.Named("dev");
            });

            builder.Azure(m =>
                {
                    m.AddAzureSender(storageConfig, "sample - 01");

                    m.AddAzureProcess(storageConfig, "sample-01", x =>
                    {
                        x.DirectoryFilter(f => f.WhereMessagesAre<IMessage>());
                        x.DispatchAsCommandBatch();
                    });
                });

            return builder;
        }
        private static CqrsEngineBuilder GetBuilder()
        {
            var builder = new CqrsEngineBuilder();

            //NOTE: Core Lokad CQRS Initialization
            builder.UseProtoBufSerialization();

            builder.Domain(config =>
            {
                config.InAssemblyOf<CreateMessage>();
                config.InAssemblyOf<CreateMessageHandler>();
                config.ContextFactory(MyMessageContext.Factory);
            });

            builder.Memory(config =>
            {
                config.AddMemoryProcess(Queues.MESSAGES, d=>{});
                config.AddMemorySender(Queues.MESSAGES);
            });

            builder.Storage(config =>
            {
                var folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "storage");
                if (!Directory.Exists(folder))
                    Directory.CreateDirectory(folder);

                config.AtomicIsInFiles(folder, s =>
                {
                    s.NameForSingleton(type => DefaultAtomicStorageStrategyBuilder.CleanName(type.Name) + ".json");
                    s.NameForEntity((type, key) => (DefaultAtomicStorageStrategyBuilder.CleanName(type.Name) + "-" + Convert.ToString(key, CultureInfo.InvariantCulture).ToLowerInvariant()) + ".json");
                    s.WithAssemblyOf<MessageView>();
                    s.CustomStaticSerializer(new AtomicStorageSerializerWithJson());
                });
                config.StreamingIsInFiles(folder);
            });

            //NOTE: Event Store Initialization
            builder.ConfigureJonathanOliverEventStore(config =>
            {
                const string CONNECTION_STRING = @"Data Source=.\sqlexpress;Initial Catalog=lokad-cqrs-eventstore;Integrated Security=True";

                config.ConnectionString(CONNECTION_STRING);
                config.Hooks(p => p.Add<MyNullPipelineHook>());
                config.Snapshots(s =>
                {
                    s.Enable();
                    s.AggregateTypeResolver(typeName => Type.GetType(typeName + ",Domain"));
                    s.CheckEvery(TimeSpan.FromSeconds(30));
                    //set this to something reasonable like 250.
                    //It's so low here to demonstrate background "out-of-band" snapshotting.
                    s.MaxThreshold(5);
                });
            });

            return builder;
        }
        protected override CqrsEngineHost BuildHost()
        {
            var builder = new CqrsEngineBuilder();

            //NOTE: Core Lokad CQRS Initialization
            builder.UseProtoBufSerialization();

            builder.Domain(config =>
            {
                config.InAssemblyOf<CreateMessage>();
                config.InAssemblyOf<CreateMessageHandler>();
                config.ContextFactory(MyMessageContext.Factory);
            });

            var storageConfig = CreateCloudStorageConfig();

            builder.Azure(config =>
            {

                config.AddAzureProcess(storageConfig, Queues.MESSAGES);
                config.AddAzureSender(storageConfig, Queues.MESSAGES);
            });

            builder.Storage(config => config.AtomicIsInAzure(storageConfig, s =>
            {
                s.WithAssemblyOf<MessageView>();
                s.CustomStaticSerializer(new AtomicStorageSerializerWithProtoBuf());
            }));

            //NOTE: Event Store Initialization
            builder.ConfigureJonathanOliverEventStore(config =>
            {
                var connectionString = AzureSettingsProvider.GetString("EventStoreConnectionString");

                config.ConnectionString(connectionString);
                config.Hooks(p => p.Add<MyNullPipelineHook>());
                config.Snapshots(s =>
                {
                    //snapshotting isn't implemented correctly right now.
                    s.Disable();
                    s.CheckEvery(TimeSpan.FromSeconds(30));
                    //set this to something reasonable like 250.
                    //It's so low here to demonstrate background "out-of-band" snapshotting.
                    s.MaxThreshold(2);
                });
            });

            return builder.Build();
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        public void Test()
        {
            var builder = new CqrsEngineBuilder();
            builder.Domain(m =>
                {
                    m.HandlerSample<Definitions.Define.Consumer<Definitions.Define.ICommand>>(c => c.Consume(null));
                    m.ContextFactory((e,x) => new Definitions.Define.MyContext(e.GetAttribute("EntityId","")));
                });
            builder.Storage(m => m.AtomicIsInMemory());
            builder.Memory(m =>
                {
                    m.AddMemorySender("in", c => c.IdGeneratorForTests());
                    m.AddMemoryProcess("in");
                });

            builder.Advanced.ConfigureContainer(cb =>
                {
                    cb.Register(c => new InMemoryEventStreamer<IAccountEvent>(c.Resolve<IMessageSender>())).
                        SingleInstance();

                    cb.RegisterType<InMemoryEventStreamer<IAccountEvent>>().SingleInstance();
                    cb.RegisterType<AccountAggregateRepository>().SingleInstance();

                });

            using (var source = new CancellationTokenSource())
            using (var engine = builder.Build())
            {
                engine.Start(source.Token);

                var sender = engine.Resolve<IMessageSender>();
                sender.SendOne(new CreateAccount("Sample User"), cb => cb.AddString("EntityId","1"));
                sender.SendOne(new AddLogin("login","pass"), cb => cb.AddString("EntityId", "1"));

                source.Token.WaitHandle.WaitOne(5000);
                source.Cancel();
            }
        }
Exemplo n.º 7
0
        public static CqrsEngineBuilder Configure()
        {
            var builder = new CqrsEngineBuilder();

            builder.Domain(d => d.HandlerSample<IConsume<IMessage>>(m => m.Consume(null)));

            var connection = AzureSettingsProvider.GetString("DiagnosticsConnectionString");

            var storageConfig = AzureStorage.CreateConfig(CloudStorageAccount.Parse(connection), c =>
            {
                c.ConfigureBlobClient(x => x.ReadAheadInBytes = 0x200000L);
                c.Named("dev");
            });

            builder.Azure(m =>
                {
                    m.AddAzureSender(storageConfig, "sample-03");

                    m.AddAzureProcess(storageConfig, "sample-03", x =>
                    {
                        x.DirectoryFilter(f => f.WhereMessagesAre<IMessage>());
                        x.DispatchAsCommandBatch();
                    });
                });

            builder.Advanced.ConfigureContainer(cb =>
                {
                    var config = ConfigureNHibernate.Build("MyDbFile");

                    cb.RegisterModule(new NHibernateModule(config));

                    WireTasks(cb);
                });

            return builder;
        }