Beispiel #1
0
        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));
        }