/// <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); }
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(); }
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(); }
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(); } }