Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        public static void ReInitialiseSchedulingConfiguration(SchedulingConfiguration newSchedulingConfiguration)
        {
            var currentSchedulingConfiguration = Container.Resolve <SchedulingConfiguration>();

            currentSchedulingConfiguration.ScheduleTimerInMins = newSchedulingConfiguration.ScheduleTimerInMins;
        }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
 public InMongoScheduleStore(SchedulingConfiguration schedulingOptions)
 {
     _mongoClient       = new MongoClient(schedulingOptions.DefaultConnection);
     scheduleCollection = _mongoClient.GetDatabase("Baibaocp").GetCollection <Schedule>("Scheduulings");
 }