Example #1
0
        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));
                }
            });
        }