ProcessQueueConfiguration.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Quadarax.Foundation.Core.Logging;
  2. namespace Quadarax.Foundation.Core.Business.Processor.Queue;
  3. public class ProcessQueueConfiguration
  4. {
  5. #region *** Properties ***
  6. public int WorkersCount {get; private set;} //number of max processing workers
  7. public TimeSpan WatchdogInterval {get; private set;} //Interval to watchdog monitor and emits new worker
  8. public TimeSpan RetentionInterval {get; private set;} //retention - Interval to run retention mechanism. If set to TimeSpan.Zero, retention disabled.
  9. public TimeSpan RetentionClearOlderThan {get; private set;} //retention - clear all status Deleted older than value in all queue types
  10. public TimeSpan RetentionDeletedOlderThan {get; private set;} //retention - mark all items to status Deleted older than value in Succ, Fail queue
  11. #endregion
  12. #region *** Private Fields ***
  13. private ILog _log;
  14. #endregion
  15. public ProcessQueueConfiguration(int workersCount, TimeSpan watchdogInterval)
  16. {
  17. WorkersCount = workersCount;
  18. WatchdogInterval = watchdogInterval;
  19. _log = new ConsoleLogger().GetLogger(GetType());
  20. }
  21. public void Validate()
  22. {
  23. var errors = new List<Exception>();
  24. if (WorkersCount==0) errors.Add(new ArgumentOutOfRangeException(nameof(WorkersCount), "WorkersCount must be bigger than zero."));
  25. if (WatchdogInterval == TimeSpan.Zero) errors.Add(new ArgumentOutOfRangeException(nameof(WatchdogInterval), "WatchdogInterval must be bigger than TimeSpan.Zero."));
  26. if (errors.Count>0) throw new AggregateException("ProcessQueue configuration has some invalid values.", errors);
  27. _log.Log(LogSeverityEnum.Debug, "Configuration validated.");
  28. }
  29. }