Beispiel #1
0
 public DbScheduler(
     IOnetimeTaskScheduler onetimeScheduler,
     IRecurringTaskScheduler recurringScheduler,
     IPublishingTaskScheduler publishingScheduler,
     IArticleSchedulerService articleSchedulerService
     )
 {
     _onetimeScheduler        = onetimeScheduler;
     _recurringScheduler      = recurringScheduler;
     _publishingScheduler     = publishingScheduler;
     _articleSchedulerService = articleSchedulerService;
 }
        private async Task <IEnumerable <RecurringTaskSchedule> > GetSchedulesAsync(IRecurringTaskScheduler recurringTaskScheduler, string schedulerName)
        {
            try
            {
                this._logger.LogInformation("Getting scheduled tasks. scheduler={0}", schedulerName);

                return(await recurringTaskScheduler.GetTaskSchedulesAsync());
            }
            catch (Exception e)
            {
                this._logger.LogError(
                    e,
                    "Unhandled exception getting schedules from '{0}'. Will delete all existing jobs.",
                    schedulerName);
            }

            return(Enumerable.Empty <RecurringTaskSchedule>());
        }
        private async Task RescheduleAsync(IRecurringTaskScheduler recurringTaskScheduler, List <RecurringTaskScheduleDto> current)
        {
            var schedulerName = recurringTaskScheduler.GetType().Name;

            this._logger.LogInformation("Getting schedules for scheduler {SchedulerName}", schedulerName);

            var taskSchedules = (await this.GetSchedulesAsync(recurringTaskScheduler, schedulerName)).ToList();

            var group = GetGroupNameFromScheduler(recurringTaskScheduler);

            // Create and update jobs
            foreach (var taskSchedule in taskSchedules)
            {
                var id = group + IdSplitter + taskSchedule.Name;

                current.Add(new RecurringTaskScheduleDto(id, taskSchedule));
            }
        }
 private static string GetGroupNameFromScheduler(IRecurringTaskScheduler scheduler)
 {
     return(scheduler.GetType().Name);
 }