public async Task Run(CancellationToken token) { _logger.Info("Start users synchronization"); var prtgErrorsHandlerVm = new PrtgErrorsHandlerViewModel(_schedulerCustomers.ToList()); foreach (var customer in _schedulerCustomers) { if (token.IsCancellationRequested) { break; } try { ProcessCustomer(customer); } catch (Exception ex) { ex.Data.Clear(); ex.Data.Add("CustomerCode", customer.CustomerName); _logger.Error($"There was an error on customer code: {customer.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } await Task.Delay(DelayDuration, token); } _prtgLogger.LogMessage(prtgErrorsHandlerVm); _logger.Info("End users synchronization"); }
public void Execute(IJobExecutionContext context) { var customersDictionary = CdcSynchronizationContext.CustomersDictionary; var prtgErrorsHandlerVm = new PrtgErrorsHandlerViewModel(customersDictionary.Select(kvp => kvp.Key).ToList()); var po = new ParallelOptions { CancellationToken = _cts.Token, MaxDegreeOfParallelism = Environment.ProcessorCount }; Parallel.ForEach(customersDictionary, po, (customerKvp, loopState) => { if (loopState.ShouldExitCurrentIteration || loopState.IsExceptional) { loopState.Stop(); } try { ProcessCustomer(customerKvp.Key, customerKvp.Value).Wait(); } catch (Exception ex) { ex.Data.Add("CustomerCode", customerKvp.Key.CustomerName); Logger.Log.Warn($"There was an error on customer code: {customerKvp.Key.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } }); _prtgLogger.LogMessage(prtgErrorsHandlerVm); Logger.Log.Trace($"All tasks for thread #{Thread.CurrentThread.ManagedThreadId} were proceeded successfuly"); }
public async Task Run(CancellationToken token) { _logger.Info("Start sending notifications"); var prtgErrorsHandlerVm = new PrtgErrorsHandlerViewModel(_schedulerCustomers.ToList()); foreach (var customer in _schedulerCustomers) { if (token.IsCancellationRequested) { break; } try { var notificationIdsStatus = await ProcessCustomer(customer, token); prtgErrorsHandlerVm.IncrementTasksQueueCount(notificationIdsStatus.prtgUnsentNotificationIds.Count); } catch (Exception ex) { ex.Data.Add("CustomerCode", customer.CustomerName); _logger.Error($"There was an error on customer code: {customer.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } } _prtgLogger.LogMessage(prtgErrorsHandlerVm); _logger.Info("End sending notifications"); }
public void Execute(IJobExecutionContext context) { var customers = QPConfiguration.GetCustomers(AppName).Where(c => !(c.ExcludeFromSchedulers || c.ExcludeFromSchedulersCdcElastic)).ToList(); var customersDictionary = new Dictionary <QaConfigCustomer, bool>(); var prtgErrorsHandlerVm = new PrtgErrorsHandlerViewModel(customers); var customersWithEnabledCdc = customers.Where(customer => { try { return(ShouldUseCdcForCustomerCode(customer)); } catch (Exception ex) { ex.Data.Clear(); ex.Data.Add("CustomerCode", customer.CustomerName); Logger.Log.Warn($"There was an error while reading customer code settings: {customer.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } return(false); }).ToList(); foreach (var customer in customersWithEnabledCdc) { try { customersDictionary.Add(customer, IsCustomerQueueEmpty(customer)); } catch (Exception ex) { ex.Data.Clear(); ex.Data.Add("CustomerCode", customer.CustomerName); Logger.Log.Warn($"There was an error while reading customer code settings: {customer.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } } CdcSynchronizationContext.ReplaceData(customersDictionary); _prtgLogger.LogMessage(prtgErrorsHandlerVm); }
public void Run() { var prtgErrorsHandlerVm = new PrtgErrorsHandlerViewModel(_customers); Parallel.ForEach(_customers, customer => { try { var customerTasksQueueCount = ProcessCustomer(customer); prtgErrorsHandlerVm.IncrementTasksQueueCount(customerTasksQueueCount); } catch (Exception ex) { ex.Data.Clear(); ex.Data.Add("CustomerCode", customer.CustomerName); Logger.Log.Error($"There was an error on customer code: {customer.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } }); _prtgLogger.LogMessage(prtgErrorsHandlerVm); }
public async Task Run(CancellationToken token) { _logger.Info("Start cleanup notification queue"); var prtgErrorsHandlerVm = new PrtgErrorsHandlerViewModel(_schedulerCustomers.ToList()); foreach (var customer in _schedulerCustomers) { try { ProcessCustomer(customer); await Task.Delay(DelayDuration, token); } catch (Exception ex) { ex.Data.Add("CustomerCode", customer.CustomerName); _logger.Error($"There was an error on customer code: {customer.CustomerName}", ex); prtgErrorsHandlerVm.EnqueueNewException(ex); } } _prtgLogger.LogMessage(prtgErrorsHandlerVm); _logger.Info("End cleanup notification queue"); }