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; }
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(); }
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(); }
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(); } }
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; }