public void QueueWrite(InfluxDbEntry[] entries, int maxRetries, string database, string retentionPoliciy) { _logger.Debug("Queuing {0} entries for influx db upload: \r\n{1}", entries.Length, string.Join(Environment.NewLine, entries.Select(x => x.ToString()))); _jobQueue.Add(new InfluxDbUploadQueueElement(entries, maxRetries, database, retentionPoliciy)); if (_handle == null || !_handle.IsRunning || _handle.HasFailed) { if (_handle != null) { _logger.Warn("Not running upload thread detected. Starting new one. Stopping old thread. Has failed: {0}", _handle.HasFailed); _threadManager.StopThread(_handle); } else { _logger.Info("Starting first time upload thread."); } var newThread = new InfluxDbUploadThread(_jobQueue, _retryJobQueue, _logger, this); _handle = _threadManager.Start(newThread); } if (_retryJob == null) { _logger.Info("Starting first time retry job."); _retryJob = new InfluxDbUploadRetryJob(_logger, _jobQueue, _retryJobQueue); _schedulingService.AddJob(_retryJob, new PollingPlan(TimeSpan.FromMinutes(1))); } }
/// <summary> /// Kicks off the running of the schedule monitor. /// </summary> /// <param name="service">The schedulign service to use.</param> public void AddToScheduler(ISchedulingService service) { var jobName = typeof(SystemMonitor).Name; if (!service.HasJob(jobName)) { service.AddJob( typeof(SystemMonitor).Name, ConfigurationManager.AppSettings[Constants.MonitorSchedule], () => { RecordPerformance(); }); } }