public static IServiceCollection AddQuartz(this IServiceCollection services, QuartzProperties properties) { services.AddSingleton <IJobFactory, JobFactory>(); services.AddSingleton(c => BuildScheduler(c, properties)); return(services); }
private static IScheduler BuildScheduler(IServiceProvider container, QuartzProperties properties) { var propsCollection = new NameValueCollection { [StdSchedulerFactory.PropertySchedulerInstanceName] = properties.InstanceName, [StdSchedulerFactory.PropertySchedulerInstanceId] = $"{Environment.MachineName}-{Guid.NewGuid()}", [StdSchedulerFactory.PropertyJobStoreType] = typeof(MongoDbJobStore).AssemblyQualifiedName, [$"{StdSchedulerFactory.PropertyJobStorePrefix}.{StdSchedulerFactory.PropertyDataSourceConnectionString}"] = properties.StoreConnectionString, ["quartz.serializer.type"] = properties.SerializerType }; var jobFactory = (IJobFactory)container.GetService(typeof(IJobFactory)); var factory = new SchedulerFactory(propsCollection, jobFactory); var scheduler = factory.GetScheduler().Result; scheduler.JobFactory = jobFactory; //scheduler.Start(); return(scheduler); }