コード例 #1
0
        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();
        }