private static void AddOrUpdateBackgroundjob(MonitoringTask monitoringTask) { RecurringJob.AddOrUpdate <ICheckUrlService>( recurringJobId: monitoringTask.RecurringJobId, methodCall: s => s.Check(monitoringTask.Id), cronExpression: "0/" + monitoringTask.IntervalSeconds + " * * * * *"); }
public void TestMonitorTask() { var watcher = System.Diagnostics.Stopwatch.StartNew(); MonitorConfiguration conf = MonitorConfiguration.Load(@"..\..\..\EnhancedMonitoring\Configuration\EnhancedMonitoringProviderConfig.xml"); conf.LogFilePath = @"C:\ProgramData\Enhanced Monitoring\log\monitor.log"; conf.LogLevel = "Verbose"; Logger.Init(conf); MonitoringTask task = MonitoringTask.CreateInstance(conf as MonitorConfiguration); task.Run(); Console.WriteLine(String.Format("Elapsed: {0}ms", watcher.ElapsedMilliseconds)); }
private void RunMonitoringTask(MonitorConfiguration conf) { Logger.Info("Start monitoring task"); DateTime start = DateTime.Now; MonitoringTask task = MonitoringTask.CreateInstance(conf); task.Run(); Logger.Info("Monitoring task finished"); TimeSpan elapsed = DateTime.Now.Subtract(start); //Substract elapsed time to get the task running exaclty aliging to refresh rate. long interval = Math.Max(conf.RefreshRate, MIN_REFRESH_RATE) * 1000; long timeToWait = interval - (long)elapsed.TotalMilliseconds % interval; //Trigger next task timer.Change(timeToWait, Timeout.Infinite); }
public void AddMonitoringTask(MonitoringTaskDto dto) { var userId = _userService.GetUser()?.Id; if (!string.IsNullOrEmpty(userId)) { var recurringJobId = Guid.NewGuid().ToString(); var monitoringTask = new MonitoringTask( userId: userId, recurringJobId: recurringJobId, name: dto.Name, url: dto.Url, intervalSeconds: dto.IntervalSeconds, enabled: dto.Enabled); _context.MonitoringTasks.Add(monitoringTask); _unitOfWork.SaveChanges(); AddOrUpdateBackgroundjob(monitoringTask); _unitOfWork.SaveChanges(); } }