public TimerService(IConfiguration config, ILogger <TimerService> logger, IClock clock, IScheduledTaskRepository schedulerState, IDueTaskJobQueue dueTaskJobQueue) { _config = config; _logger = logger; _clock = clock; _schedulerState = schedulerState; _dueTaskJobQueue = dueTaskJobQueue; if (_config["timerInitialDelay"] != null) { _initialDelay = int.Parse(_config["timerInitialDelay"]); } if (_config["timerPeriod"] != null) { _period = int.Parse(_config["timerPeriod"]); } _logger.LogInformation($"TimerService initialised with initial delay of {_initialDelay}ms and period of {_period}ms"); }
public App(IScheduledTaskRepository scheduledTaskRepository, IScheduledTaskBuilderFactory scheduledTaskBuilderFactory, ILogger <App> logger, IDueTaskJobQueue dueTaskJobQueue) { _taskRepository = scheduledTaskRepository; // where the scheduled tasks are stored _taskBuilderFactory = scheduledTaskBuilderFactory; // a handy builder for scheduled tasks _logger = logger; // gather evidence that a task has been executed // Setup a task handler for all tasks dueTaskJobQueue.RegisterHandlerForAllTasks((scheduledTask) => { _logger.LogInformation($"{scheduledTask.JobData} {scheduledTask.Id}"); }); // Setup a specific task handler for tasks which have a SpecificTaskPayload as their jobdata dueTaskJobQueue.RegisterHandlerWhen((scheduledTask) => { var payload = JsonSerializer.Deserialize <SpecificTaskPayload>(scheduledTask.JobData); _logger.LogInformation($"SpecificTaskPayload {payload.Run()} {scheduledTask.Id}"); }, task => task.JobDataTypeName == nameof(SpecificTaskPayload)); }