| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using Quadarax.Foundation.Core.Logging;
- namespace Quadarax.Foundation.Core.Business.Processor.Queue;
- public class ProcessQueueConfiguration
- {
- #region *** Properties ***
- public int WorkersCount {get; private set;} //number of max processing workers
- public TimeSpan WatchdogInterval {get; private set;} //Interval to watchdog monitor and emits new worker
- public TimeSpan RetentionInterval {get; private set;} //retention - Interval to run retention mechanism. If set to TimeSpan.Zero, retention disabled.
- public TimeSpan RetentionClearOlderThan {get; private set;} //retention - clear all status Deleted older than value in all queue types
- public TimeSpan RetentionDeletedOlderThan {get; private set;} //retention - mark all items to status Deleted older than value in Succ, Fail queue
- #endregion
- #region *** Private Fields ***
- private ILog _log;
- #endregion
- public ProcessQueueConfiguration(int workersCount, TimeSpan watchdogInterval)
- {
- WorkersCount = workersCount;
- WatchdogInterval = watchdogInterval;
- _log = new ConsoleLogger().GetLogger(GetType());
- }
-
- public void Validate()
- {
- var errors = new List<Exception>();
- if (WorkersCount==0) errors.Add(new ArgumentOutOfRangeException(nameof(WorkersCount), "WorkersCount must be bigger than zero."));
- if (WatchdogInterval == TimeSpan.Zero) errors.Add(new ArgumentOutOfRangeException(nameof(WatchdogInterval), "WatchdogInterval must be bigger than TimeSpan.Zero."));
-
- if (errors.Count>0) throw new AggregateException("ProcessQueue configuration has some invalid values.", errors);
- _log.Log(LogSeverityEnum.Debug, "Configuration validated.");
- }
- }
|