public ScheduleDbContext CreateDbContext(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(AppContext.BaseDirectory) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); var optionsBuilder = new DbContextOptionsBuilder <ScheduleDbContext>(); SchedulingConfiguration schedulingOptions = builder.GetSection("SchedulingConfiguration").Get <SchedulingConfiguration>(); optionsBuilder.UseMySql(schedulingOptions.DefaultConnection); return(new ScheduleDbContext(new StorageOptions { }, optionsBuilder.Options)); }
static async Task Main(string[] args) { var host = new HostBuilder() .ConfigureHostConfiguration(configurationBuilder => { configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); configurationBuilder.AddEnvironmentVariables(); }) .ConfigureLogging((hostContext, loggerBuilder) => { loggerBuilder.AddConsole(); if (hostContext.HostingEnvironment.IsDevelopment()) { loggerBuilder.AddDebug(); } loggerBuilder.SetMinimumLevel(LogLevel.Trace); }) .ConfigureServices((hostContext, services) => { services.AddFighting(fightBuilder => { fightBuilder.ConfigureScheduling(setupAction => { SchedulingConfiguration schedulingOptions = hostContext.Configuration.GetSection("SchedulingConfiguration").Get <SchedulingConfiguration>(); setupAction.UseMysqlStorage(schedulingOptions); }); }); }) .Build(); Console.WriteLine("Starting..."); await host.StartAsync(); //ISchedulerManager schedulerManager = host.Services.GetRequiredService<ISchedulerManager>(); //for (int i = 0; i < 10000; i++) //{ // await schedulerManager.EnqueueAsync<ILotteryPhaseScheduler, LotteryPhaseSchedulerArgs>(new LotteryPhaseSchedulerArgs { }); //} Console.CancelKeyPress += async(sender, e) => { Console.WriteLine("Shutting down..."); await host.StopAsync(new CancellationTokenSource(3000).Token); Environment.Exit(0); }; await host.WaitForShutdownAsync(); }
public static void ReInitialiseSchedulingConfiguration(SchedulingConfiguration newSchedulingConfiguration) { var currentSchedulingConfiguration = Container.Resolve <SchedulingConfiguration>(); currentSchedulingConfiguration.ScheduleTimerInMins = newSchedulingConfiguration.ScheduleTimerInMins; }
public static SchedulingBuilder UseMysqlStorage(this SchedulingBuilder schedulingBuilder, SchedulingConfiguration schedulingConfiguration) { schedulingBuilder.Services.TryAddTransient <IScheduleStore, ScheduleStorage>(); schedulingBuilder.FightBuilder.ConfigureStorage(setupAction => { setupAction.AddEntityFrameworkCore <ScheduleDbContext>(optionsBuilder => { optionsBuilder.UseMySql(schedulingConfiguration.DefaultConnection); }); }); return(schedulingBuilder); }
static async Task MainAsync(string[] args) { var builder = new HostBuilder() .ConfigureAppConfiguration(configurationBuilder => { configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); configurationBuilder.AddEnvironmentVariables(); }) .ConfigureServices((hostContext, services) => { services.AddFighting(fightBuilder => { fightBuilder.ConfigureMessageServices(messageServiceBuilder => { messageServiceBuilder.UseLotteryOrderingMessagePublisher(); messageServiceBuilder.UseLotteryNoticingMessagePublisher(); messageServiceBuilder.UseLotteryDispatchingMessagePublisher(); }); fightBuilder.ConfigureScheduling(setupAction => { setupAction.AddLotteryOrderingScheduling(); SchedulingConfiguration schedulingOptions = hostContext.Configuration.GetSection("SchedulingConfiguration").Get <SchedulingConfiguration>(); setupAction.UseMysqlStorage(schedulingOptions); }); fightBuilder.ConfigureApplicationServices(applicationServiceBuilder => { applicationServiceBuilder.UseBaibaocpApplicationService(); applicationServiceBuilder.UseLotteryOrderingApplicationService(); }); fightBuilder.ConfigureCacheing(cacheBuilder => { cacheBuilder.UseRedisCache(options => { options.ConnectionString = hostContext.Configuration.GetConnectionString("Baibaocp.Redis"); }); }); fightBuilder.AddUnitOfWork(unitOfWorkBuilder => { unitOfWorkBuilder.UseEntityFrameworkCore(typeof(LotteryOrderingDbContext), typeof(BaibaocpStorageContext)); }); fightBuilder.ConfigureStorage(storageBuilder => { storageBuilder.AddEntityFrameworkCore <LotteryOrderingDbContext>(optionsBuilder => { optionsBuilder.UseMySql(hostContext.Configuration.GetConnectionString("Baibaocp.Storage")); }); storageBuilder.AddEntityFrameworkCore <BaibaocpStorageContext>(optionsBuilder => { optionsBuilder.UseMySql(hostContext.Configuration.GetConnectionString("Baibaocp.Storage")); }); }); }); services.AddSingleton <IHostedService, LotteryAwardingMessageSubscriber>(); services.AddSingleton <IHostedService, LotteryOrderingMessageSubscriber>(); services.AddSingleton <IHostedService, LotteryTicketingMessageSubscriber>(); services.AddRawRabbit(new RawRabbitOptions { ClientConfiguration = hostContext.Configuration.GetSection("RawRabbitConfiguration").Get <RawRabbitConfiguration>(), }); }) .ConfigureLogging(logging => logging.AddConsole()); await builder.RunConsoleAsync(); }
public InMongoScheduleStore(SchedulingConfiguration schedulingOptions) { _mongoClient = new MongoClient(schedulingOptions.DefaultConnection); scheduleCollection = _mongoClient.GetDatabase("Baibaocp").GetCollection <Schedule>("Scheduulings"); }