static async Task MainAsync()
        {
            var bus = await BusConfigurator.CreateBus(EndpointConstants.EndpointName);

            var endpoint = await bus.Start();

            try
            {
                while (true)
                {
                    await Console.Out.WriteLineAsync("Press any key to send a message...");

                    Console.ReadKey();


                    var so = new SendOptions();
                    so.SetDestination(EndpointConstants.SagaServiceEndpointName);

                    var response = await endpoint.Request <MySagaResponse>(new MyStartSagaCommand()
                    {
                        MyEntityId = Guid.NewGuid(), Data = "Hello World"
                    }, so)
                                   .ConfigureAwait(false);

                    await Console.Out.WriteLineAsync($"[{response.MyEntityId}]: {response.Data}");
                }
            }
            finally
            {
                await endpoint.Stop();
            }
        }
        static async Task Main(string[] args)
        {
            Console.Title = "Quartz Test Endpoint";

            Configuration = new ConfigurationBuilder()
                            .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                            .AddJsonFile("appsettings.json", true, true)
                            .Build();



            var hostBuilder = new HostBuilder().ConfigureServices(ConfigureServices);

            Logger.Info("Configuring bus and scheduler");

            var scheduler = await BusConfigurator.CreateScheduler();

            var scheduledMessageConsumer = new ScheduleMessageConsumer(scheduler);

            var bus = BusConfigurator
                      .CreateBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(host, "quartz-test",
                                    e =>
                {
                    e.PrefetchCount = 16;
                    e.Consumer <StartTestConsumer>();
                });
                cfg.ReceiveEndpoint(host, "delayed",
                                    e =>
                {
                    e.PrefetchCount = 16;
                    cfg.UseMessageScheduler(e.InputAddress);
                    e.Consumer(() => scheduledMessageConsumer);
                });
            });


            Console.WriteLine("Staring bus and scheduler");
            await bus.StartAsync();

            scheduler.JobFactory = new MassTransitJobFactory(bus);
            await scheduler.Start();

            Console.WriteLine("Listening for messages");
            Console.WriteLine("Enter 'q' to quit");

            await hostBuilder.RunConsoleAsync();

            Console.WriteLine("Shutting down bus and scheduler");
            await scheduler.Standby();

            await bus.StopAsync();

            await scheduler.Shutdown();
        }
        static async Task MainAsync()
        {
            var bus = await BusConfigurator.CreateBus(EndpointConstants.SagaServiceEndpointName);

            var endpoint = await bus.Start()
                           .ConfigureAwait(false);

            try
            {
                Console.WriteLine("Listening...");
                Console.WriteLine("Press any key to exit");
                Console.ReadKey();
            }
            finally
            {
                await endpoint.Stop()
                .ConfigureAwait(false);
            }
        }
        static async Task Main(string[] args)
        {
            Console.Title = "Super Duper MassTransit Tester";

            var bus      = BusConfigurator.CreateBus();
            var busUri   = BusConfigurator.GetBusUri("quartz-test");
            var endpoint = await bus.GetSendEndpoint(busUri);

            OutputPrompt();

            var testRunId = Guid.NewGuid();

            do
            {
                var input = Console.ReadLine();

                if (input == "q")
                {
                    break;
                }

                if (input.StartsWith("t"))
                {
                    var testRuns = int.Parse(input.Split(':')[1]);

                    for (var i = 0; i < testRuns; i++)
                    {
                        var testId = $"{testRunId}-{i + 1}";
                        await endpoint.Send(new StartTest { TestId = testId });

                        Console.WriteLine($"Sent StartTest {testId}.");
                    }

                    Console.WriteLine();
                    OutputPrompt();
                }
            } while (true);
        }