Exemplo n.º 1
0
        /// <summary>
        ///     add quartz base services
        /// </summary>
        /// <param name="services">service collection</param>
        /// <param name="configuration">app config</param>
        /// <returns></returns>
        private static IServiceCollection RegisterQuartzBase(this IServiceCollection services,
                                                             IConfiguration configuration)
        {
            services.AddSingleton <IJobFactory, JobFactory>();

            services.AddSingleton(provider =>
            {
                var option           = new QuartzOption(configuration);
                var schedulerFactory = new StdSchedulerFactory(option.ToProperties());
                var scheduler        = schedulerFactory.GetScheduler().Result;
                scheduler.JobFactory = provider.GetService <IJobFactory>();
                return(scheduler);
            });
            services.AddHostedService <QuartzService>();
            return(services);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            var host = new HostBuilder()
                       .ConfigureHostConfiguration(configHost =>
            {
                configHost.SetBasePath(Directory.GetCurrentDirectory());
                configHost.AddEnvironmentVariables("ASPNETCORE_");
            })
                       .ConfigureAppConfiguration((hostContext, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", true);
                configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", true);
                configApp.AddEnvironmentVariables();
            })
                       .ConfigureServices((hostContext, services) =>
            {
                //配置服务及依赖注入注册,注:没有Middleware的配置了。
                services.AddLogging();
                services.AddSingleton <IJobFactory, JobFactory>();
                services.AddSingleton(provider =>
                {
                    var option           = new QuartzOption(hostContext.Configuration);
                    var sf               = new StdSchedulerFactory(option.ToProperties());
                    var scheduler        = sf.GetScheduler().Result;
                    scheduler.JobFactory = provider.GetService <IJobFactory>();
                    return(scheduler);
                });
                services.AddHostedService <QuartzService>();

                services.AddSingleton <RabbitMqJob, RabbitMqJob>();
                services.AddSingleton <WeatherJob, WeatherJob>();
            })
                       .ConfigureLogging((hostContext, configLogging) =>
            {
                configLogging.AddConsole();
                configLogging.AddDebug();
            })
                       .UseConsoleLifetime()
                       .Build();

            host.Run();
        }
Exemplo n.º 3
0
        public static void Main(string[] args)
        {
            var host = new HostBuilder()
                       .ConfigureHostConfiguration(configHost =>
            {
                configHost.SetBasePath(Directory.GetCurrentDirectory());
                //configHost.AddJsonFile("hostsettings.json", true, true);
                configHost.AddEnvironmentVariables("ASPNETCORE_");
                //configHost.AddCommandLine(args);
            })
                       .ConfigureAppConfiguration((hostContext, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", true);
                //configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", true);
                configApp.AddEnvironmentVariables();
                //configApp.AddCommandLine(args);
            })
                       .ConfigureServices((hostContext, services) =>
            {
                services.AddLogging();
                //services.AddHostedService<TimedHostedService>();

                services.AddSingleton <IJobFactory, JobFactory>();
                services.AddSingleton <IHello, Hello>();
                services.AddSingleton(provider =>
                {
                    var option = new QuartzOption(hostContext.Configuration);


                    var sf          = new StdSchedulerFactory(option.ToProperties());
                    var scheduler   = sf.GetScheduler().Result;
                    super_scheduler = scheduler;
                    ////3.创建计划
                    //var trigger = TriggerBuilder.Create()
                    //.WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())//每两秒执行一次
                    //.Build();
                    ////4、创建任务
                    //var jobDetail = JobBuilder.Create<TibosJob>()
                    //                .WithIdentity("job", "group4")
                    //                .Build();
                    //scheduler.ScheduleJob(jobDetail, trigger);

                    scheduler.JobFactory = provider.GetService <IJobFactory>();
                    return(scheduler);
                });
                services.AddHostedService <QuartzService>();

                services.AddSingleton <TestJob, TestJob>();
                services.AddSingleton <TibosJob, TibosJob>();


                RPCServer rPCServer = new RPCServer(9988);
                rPCServer.RegisterService <IHello, Hello>();
                rPCServer.Start();
                Console.WriteLine("服务端启动了");
            })
                       .ConfigureLogging((hostContext, configLogging) =>
            {
                configLogging.AddConsole();
                if (hostContext.HostingEnvironment.EnvironmentName == EnvironmentName.Development)
                {
                    configLogging.AddDebug();
                }
            })
                       .UseConsoleLifetime()
                       .Build();

            host.Run();
            Console.ReadLine();
        }
Exemplo n.º 4
0
        private static async Task MainAsync()
        {
            var host = new HostBuilder()
                       .ConfigureHostConfiguration(configHost =>
            {
                //配置根目录
                configHost.SetBasePath(Directory.GetCurrentDirectory());

                //读取host的配置json,和appsetting类似,暂不需要先注释掉,可根据需要开启
                //configHost.AddJsonFile("hostsettings.json", true, true);

                //读取环境变量,Asp.Net core默认的环境变量是以ASPNETCORE_作为前缀的,这里也采用此前缀以保持一致
                configHost.AddEnvironmentVariables("ASPNETCORE_");

                //可以在启动host的时候之前可传入参数,暂不需要先注释掉,可根据需要开启
                //configHost.AddCommandLine(args);
            })
                       .ConfigureAppConfiguration((hostContext, configApp) =>
            {
                //读取应用的配置json
                configApp.AddJsonFile("appsettings.json", true);

                //读取应用特定环境下的配置json
                configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", true);

                //读取环境变量
                configApp.AddEnvironmentVariables();

                //可以在启动host的时候之前可传入参数,暂不需要先注释掉,可根据需要开启
                //configApp.AddCommandLine(args);
            })
                       .ConfigureServices((hostContext, services) =>
            {
                services.AddLogging();

                services.AddSingleton <FirmService>();
                services.AddSingleton <PassportService>();
                services.AddSingleton <BaseRepository>();
                services.AddSingleton <FirmRepository>();
                services.AddSingleton <UserRepository>();
                services.AddSingleton <TbdFirmService>();

                services.AddSingleton <IJobFactory, JobFactory>();
                services.AddSingleton(provider =>
                {
                    var option           = new QuartzOption(hostContext.Configuration);
                    var sf               = new StdSchedulerFactory(option.ToProperties());
                    var scheduler        = sf.GetScheduler().Result;
                    scheduler.JobFactory = provider.GetService <IJobFactory>();
                    return(scheduler);
                });
                services.AddHostedService <SyncFirmHostedService>();

                services.AddSingleton <TestJob>();
                services.AddSingleton <SyncFirmJob>();
            })
                       .ConfigureLogging((hostContext, configLogging) =>
            {
                //输出控制台日志
                configLogging.AddConsole();

                configLogging.AddNLog();
                NLogBuilder.ConfigureNLog("nlog.config");

                //开发环境输出Debug日志
                if (hostContext.HostingEnvironment.EnvironmentName == EnvironmentName.Development)
                {
                    configLogging.AddDebug();
                }
            })
                       .UseConsoleLifetime()//使用控制台生命周期  使用Ctrl+C退出
                       .Build();

            await host.RunAsync();
        }
        static async Task Main(string[] args)
        {
            var logger = LogManager.GetCurrentClassLogger();

            try
            {
                var builder = new HostBuilder()
                              //Host config
                              .ConfigureHostConfiguration(configHost =>
                {
                    configHost.AddEnvironmentVariables(prefix: "ASPNETCORE_");
                    if (args != null)
                    {
                        configHost.AddCommandLine(args);
                    }
                })
                              //App config
                              .ConfigureAppConfiguration((hostContext, configApp) =>
                {
                    configApp.AddJsonFile("appsettings.json", optional: true);
                    configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true);
                    configApp.AddEnvironmentVariables();
                    if (args != null)
                    {
                        configApp.AddCommandLine(args);
                    }
                })
                              //Services
                              .ConfigureServices((hostContext, services) =>
                {
                    //EF SQL Server
                    var connectionString = hostContext.Configuration["sqlserverconnection"];
                    services.AddDbContext <HostDemoContext>(o => o.UseSqlServer(connectionString), ServiceLifetime.Singleton);

                    //Rabbit MQ
                    string rabbitMqConnection = hostContext.Configuration["rabbitmqconnection"];
                    services.RegisterEasyNetQ(rabbitMqConnection);

                    //Quartz
                    services.AddSingleton <IJobFactory, JobFactory>();
                    services.AddSingleton(provider =>
                    {
                        var option           = new QuartzOption(hostContext.Configuration);
                        var sf               = new StdSchedulerFactory(option.ToProperties());
                        var scheduler        = sf.GetScheduler().Result;
                        scheduler.JobFactory = provider.GetService <IJobFactory>();
                        return(scheduler);
                    });
                    services.AddHostedService <QuartzService>();

                    //Hosted Services
                    services.AddHostedService <TimedHostedService>();
                    services.AddHostedService <RabbitMQDemoHostedService>();

                    //Jobs
                    services.AddSingleton <TestJob>();
                })
                              //Log
                              .UseNLog();

                await builder.RunConsoleAsync();
            }
            catch (Exception ex)
            {
                logger.Fatal(ex, "Stopped program because of exception");
                throw;
            }
            finally
            {
                // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
                LogManager.Shutdown();
            }
        }