private static void Main(string[] args) { Parser.Default.ParseArguments <Options>(args) .WithParsed <Options>(o => { Console.WriteLine( $"---------------------------------- CONSUMER OF ALL ----------------------------------"); var config = new ConfigurationBuilder().Build(); var collection = new ServiceCollection().AddLogging(s => { s.AddConsole(); //.SetMinimumLevel(LogLevel.Trace); }); Console.WriteLine("Adding Spigot"); Console.WriteLine("|"); var spigot = collection.AddSpigot(config) .WithFriendlyName("Consumer of all things") .AddKnob <ConsoleKnob, ComplexModelWithChildren>(); foreach (var objPort in o.Ports) { switch (o.Backend) { case Backend.Redis: Console.WriteLine($"|-->Adding Redis stream on port {objPort}"); spigot.AddRedis(r => { r.ConfigurationOptions = ConfigurationOptions.Parse($"localhost:{objPort}"); }); break; case Backend.KubeMQ: Console.WriteLine($"|-->Adding KubeMQ eventstore on port {objPort}"); spigot.AddKubeMq(r => { r.ServerAddress = $"localhost:{objPort}"; }); break; default: throw new ArgumentOutOfRangeException(); } } spigot.Build(); var provider = collection.BuildServiceProvider(); Console.WriteLine(); provider.GetService <MessageSender <ComplexModelWithChildren> >() .Send(ComplexModelWithChildren.Random()); }); while (true) { Thread.Sleep(2000); } }
/// <summary> /// He needs the following: /// Backing (Redis/KubeMQ) /// Port /// Name /// </summary> /// <param name="args"></param> private static void Main(string[] args) { var random = new Random(); Parser.Default.ParseArguments <Options>(args) .WithParsed <Options>(o => { Console.WriteLine( $"---------------------------------- PRODUCER/CONSUMER NAMED {o.Name} ----------------------------------"); var config = new ConfigurationBuilder().Build(); var collection = new ServiceCollection().AddLogging(); var spigot = collection.AddSpigot(config) .WithFriendlyName(o.Name) .AddKnob <ConsoleKnob, ComplexModelWithChildren>(); switch (o.Backend) { case Backend.Redis: spigot.AddRedis(r => { r.ConfigurationOptions = ConfigurationOptions.Parse($"localhost:{o.Port}"); }); break; case Backend.KubeMQ: spigot.AddKubeMq(r => { r.ServerAddress = $"localhost:{o.Port}"; }); break; default: throw new ArgumentOutOfRangeException(); } spigot.Build(); var provider = collection.BuildServiceProvider(); var sender = provider.GetService <MessageSender <ComplexModelWithChildren> >(); while (true) { sender.Send(ComplexModelWithChildren.Random()); Thread.Sleep(random.Next(1000, 5000)); } }); }