public void Run_in_test() { var streamer = EnvelopeStreamer.CreateDefault(typeof(CreateCustomer), typeof(CustomerCreated)); var builder = new CqrsEngineBuilder(streamer); var account = new MemoryStorageConfig(); var nuclear = account.CreateNuclear(new TestStrategy()); var inbox = account.CreateInbox("input"); var sender = account.CreateSimpleSender(streamer, "input"); var handler = new RedirectToCommand(); handler.WireToLambda <CreateCustomer>(customer => Consume(customer, nuclear, sender)); handler.WireToLambda <CustomerCreated>(m => Console.WriteLine("Created!")); builder.Handle(inbox, envelope => handler.InvokeMany(envelope.SelectContents())); using (var engine = builder.Build()) { sender.SendOne(new CreateCustomer { CustomerId = 1, CustomerName = "Rinat Abdullin" }); engine.RunForever(); } }
public void Run_in_test() { var streamer = EnvelopeStreamer.CreateDefault(typeof(CreateCustomer), typeof(CustomerCreated)); var builder = new CqrsEngineBuilder(streamer); var account = new MemoryStorageConfig(); var nuclear = account.CreateNuclear(new TestStrategy()); var inbox = account.CreateInbox("input"); var sender = account.CreateSimpleSender(streamer, "input"); var handler = new RedirectToCommand(); handler.WireToLambda<CreateCustomer>(customer => Consume(customer, nuclear, sender)); handler.WireToLambda<CustomerCreated>(m => Console.WriteLine("Created!")); builder.Handle(inbox, envelope => handler.InvokeMany(envelope.SelectContents())); using (var engine = builder.Build()) { sender.SendOne(new CreateCustomer { CustomerId = 1, CustomerName = "Rinat Abdullin" }); engine.RunForever(); } }
public static SimpleMessageSender CreateSimpleSender(this MemoryStorageConfig storageConfig, IEnvelopeStreamer streamer, string queueName, Func <string> idGenerator = null) { var queueWriter = new[] { CreateQueueWriter(storageConfig, queueName) }; return(new SimpleMessageSender(streamer, queueWriter, idGenerator)); }
public static MemoryPartitionInbox CreateInbox(this MemoryStorageConfig storageConfig, params string[] queueNames) { var queues = queueNames .Select(n => storageConfig.Queues.GetOrAdd(n, s => new BlockingCollection <byte[]>())) .ToArray(); return(new MemoryPartitionInbox(queues, queueNames)); }
public void Direct() { var config = new MemoryStorageConfig(); var raw = new CqrsEngineBuilder(EnvelopeStreamer.CreateDefault()); var doWriter = config.CreateQueueWriter("do"); // forwarder do => do raw.Dispatch(config.CreateInbox("do"), doWriter.PutMessage); TestConfiguration(doWriter, raw); }
public void Direct() { var config = new MemoryStorageConfig(); var raw = new RawEngineBuilder(); var doWriter = config.CreateQueueWriter("do"); // forwarder do => do raw.Dispatch(config.CreateInbox("do"), envelope => doWriter.PutMessage(envelope)); TestConfiguration(doWriter, raw); }
public void RouterChain() { var config = new MemoryStorageConfig(); var raw = new CqrsEngineBuilder(EnvelopeStreamer.CreateDefault()); var doWriter = config.CreateQueueWriter("do"); var route1 = config.CreateQueueWriter("route1"); var route2 = config.CreateQueueWriter("route2"); // in => (route1 OR route2) raw.Dispatch(config.CreateInbox("in"), bytes => LoadBalance(bytes, route1, route2)); // forwarder (route1,route2) => do raw.Dispatch(config.CreateInbox("route1", "route2"), doWriter.PutMessage); raw.Dispatch(config.CreateInbox("do"), bytes => LoadBalance(bytes, route1, route2)); TestConfiguration(config.CreateQueueWriter("in"), raw); }
public void RouterChain() { var config = new MemoryStorageConfig(); var raw = new RawEngineBuilder(); var doWriter = config.CreateQueueWriter("do"); var route1 = config.CreateQueueWriter("route1"); var route2 = config.CreateQueueWriter("route2"); // in => (route1 OR route2) raw.Dispatch(config.CreateInbox("in"), bytes => LoadBalance(bytes, route1, route2)); // forwarder (route1,route2) => do raw.Dispatch(config.CreateInbox("route1", "route2"), envelope => doWriter.PutMessage(envelope)); raw.Dispatch(config.CreateInbox("do"), bytes => LoadBalance(bytes, route1, route2)); TestConfiguration(config.CreateQueueWriter("in"), raw); }
public void Memory_lambda() { var config = new MemoryStorageConfig(); var writer = config.CreateQueueWriter("test"); var inbox = config.CreateInbox("test"); var builder = new CqrsEngineBuilder(null); builder.Dispatch(inbox, bytes => { }); var setup = new Setup { Send = i => writer.PutMessage(new[] {i}), Engine = builder.Build() }; TestConfiguration(setup, 1000000); }
public void Memory_lambda() { var config = new MemoryStorageConfig(); var writer = config.CreateQueueWriter("test"); var inbox = config.CreateInbox("test"); var builder = new CqrsEngineBuilder(null); builder.Dispatch(inbox, bytes => { }); var setup = new Setup { Send = i => writer.PutMessage(new[] { i }), Engine = builder.Build() }; TestConfiguration(setup, 1000000); }
public static MessageSender CreateMessageSender(this MemoryStorageConfig storageConfig, IEnvelopeStreamer streamer, string queueName) { return(new MessageSender(streamer, CreateQueueWriter(storageConfig, queueName))); }
public static IQueueWriter CreateQueueWriter(this MemoryStorageConfig storageConfig, string queueName) { var collection = storageConfig.Queues.GetOrAdd(queueName, s => new BlockingCollection <byte[]>()); return(new MemoryQueueWriter(collection, queueName)); }
/// <summary> /// Creates the simplified nuclear storage wrapper around Atomic storage. /// </summary> /// <param name="dictionary">The dictionary.</param> /// <param name="strategy">The atomic storage strategy.</param> /// <returns></returns> public static NuclearStorage CreateNuclear(this MemoryStorageConfig dictionary, IDocumentStrategy strategy) { var container = new MemoryDocumentStore(dictionary.Data, strategy); return(new NuclearStorage(container)); }
public static MemoryQueueWriterFactory CreateWriteQueueFactory(this MemoryStorageConfig storageConfig) { return(new MemoryQueueWriterFactory(storageConfig)); }