public static IServiceCollection AddCoreJobServer(this IServiceCollection services, IConfiguration configuration, Action <CoreJobServerOptions> action = null) { // options var options = new CoreJobServerOptions(); action?.Invoke(options); services.AddOptionConfiguration(configuration, options); services.AddSingleton(options); // ef core EntityFrameworkManager.IsCommunity = true; services.AddDbContext <JobDbContext>((provider, options) => { var storeOptions = provider.GetRequiredService <IOptions <StoreOptions> >().Value; provider.GetRequiredService <IStoreProvider>()?.OptionsAction(options, storeOptions); options.EnableSensitiveDataLogging().EnableDetailedErrors(); }); // quartz services.AddQuartz(q => { q.AddJobListener <CoreJobListener>(GroupMatcher <JobKey> .GroupEquals(JobConstant.Job_Default_Group)); q.AddTriggerListener <CoreJobListener>(GroupMatcher <TriggerKey> .GroupEquals(JobConstant.Job_Default_Group)); q.UseMicrosoftDependencyInjectionScopedJobFactory(); }); // services services.AddTransient <IServerSender, ServerSender>(); services.AddSingleton <IJobSchedulerHandler, JobSchedulerHandler>(); services.AddHostedService <JobSchedulerService>(); services.AddSingleton <ISystemScheduler, RegistryHealthCheckScheduler>(); // job if (!options.JobAssemblies.Contains(typeof(JobServerExtensions).Assembly)) { options.JobAssemblies.Add(typeof(JobServerExtensions).Assembly); } JobUtilExtensions.CollectByInterface <IJob>(options.JobAssemblies).ForEach(t => { services.AddScoped(t); }); // route table services.AddRouteTable(new ServerRouteTable()); // quartz server services.AddQuartzServer(options => { options.WaitForJobsToComplete = true; }); foreach (var item in options.Extensions) { item.AddServices(services); } return(services); }
public CoreJobServerMiddleware(CoreJobServerOptions options, ServerRouteTable routeTable, RequestHandler requestHandler, RequestDelegate next) { _options = options; _routeTable = routeTable; _next = next; _requestHandler = requestHandler; }
public ClearLogsJob(JobDbContext dbContext, CoreJobServerOptions options) { _dbContext = dbContext; _options = options; }
public DefaultCoreJob(IServerSender serverSender, CoreJobServerOptions options) { _serverSender = serverSender; _options = options; }
public ServerSender(CoreJobServerOptions options, ILogger <ServerSender> logger) { _options = options; _logger = logger; }
public static CoreJobServerOptions UseMysql(this CoreJobServerOptions options, Action <StoreOptions> configure) { options.RegisterExtension(new MysqlJobOptionsExtension(configure)); return(options); }