Ejemplo n.º 1
0
 public ServiceCollectionSchedulerFactory(
     IServiceProvider serviceProvider,
     IOptions <QuartzOptions> options,
     ContainerConfigurationProcessor processor)
 {
     this.serviceProvider = serviceProvider;
     this.options         = options;
     this.processor       = processor;
 }
        public override async Task <IScheduler> GetScheduler(CancellationToken cancellationToken = default)
        {
            var scheduler = await base.GetScheduler(cancellationToken);

            if (initialized)
            {
                return(scheduler);
            }

            ContainerConfigurationProcessor configurationProcessor = new ContainerConfigurationProcessor(serviceProvider);
            await configurationProcessor.ScheduleJobs(scheduler, cancellationToken);

            initialized = true;
            return(scheduler);
        }
Ejemplo n.º 3
0
        public override async Task <IScheduler> GetScheduler(CancellationToken cancellationToken = default)
        {
            // check if logging provider configured and let if configure
            serviceProvider.GetService <MicrosoftLoggingProvider>();

            var scheduler = await base.GetScheduler(cancellationToken);

            if (initialized)
            {
                return(scheduler);
            }

            foreach (var listener in serviceProvider.GetServices <ISchedulerListener>())
            {
                scheduler.ListenerManager.AddSchedulerListener(listener);
            }

            var jobListeners = serviceProvider.GetServices <IJobListener>();

            foreach (var configuration in serviceProvider.GetServices <JobListenerConfiguration>())
            {
                var listener = jobListeners.First(x => x.GetType() == configuration.ListenerType);
                scheduler.ListenerManager.AddJobListener(listener, configuration.Matchers);
            }

            var triggerListeners = serviceProvider.GetServices <ITriggerListener>();

            foreach (var configuration in serviceProvider.GetServices <TriggerListenerConfiguration>())
            {
                var listener = triggerListeners.First(x => x.GetType() == configuration.ListenerType);
                scheduler.ListenerManager.AddTriggerListener(listener, configuration.Matchers);
            }

            var calendars = serviceProvider.GetServices <CalendarConfiguration>();

            foreach (var configuration in calendars)
            {
                await scheduler.AddCalendar(configuration.Name, configuration.Calendar, configuration.Replace, configuration.UpdateTriggers, cancellationToken);
            }

            ContainerConfigurationProcessor configurationProcessor = new ContainerConfigurationProcessor(serviceProvider);
            await configurationProcessor.ScheduleJobs(scheduler, cancellationToken);

            initialized = true;
            return(scheduler);
        }
Ejemplo n.º 4
0
        public override async Task <IScheduler> GetScheduler(CancellationToken cancellationToken = default)
        {
            var scheduler = await base.GetScheduler(cancellationToken);

            if (initialized)
            {
                return(scheduler);
            }

            foreach (var listener in serviceProvider.GetServices <ISchedulerListener>())
            {
                scheduler.ListenerManager.AddSchedulerListener(listener);
            }

            var jobListeners = serviceProvider.GetServices <IJobListener>();

            foreach (var configuration in serviceProvider.GetServices <JobListenerConfiguration>())
            {
                var listener = jobListeners.First(x => x.GetType() == configuration.ListenerType);
                scheduler.ListenerManager.AddJobListener(listener, configuration.Matchers);
            }

            var triggerListeners = serviceProvider.GetServices <ITriggerListener>();

            foreach (var configuration in serviceProvider.GetServices <TriggerListenerConfiguration>())
            {
                var listener = triggerListeners.First(x => x.GetType() == configuration.ListenerType);
                scheduler.ListenerManager.AddTriggerListener(listener, configuration.Matchers);
            }

            ContainerConfigurationProcessor configurationProcessor = new ContainerConfigurationProcessor(serviceProvider);
            await configurationProcessor.ScheduleJobs(scheduler, cancellationToken);

            initialized = true;
            return(scheduler);
        }