/// <summary>
        /// Initializes a new instance of the <see cref="Scheduler" /> class.
        /// </summary>
        /// <param name="queue">The queue.</param>
        /// <param name="schedulerMessageHandler">The message handler.</param>
        /// <param name="factory">The factory.</param>
        /// <param name="workGroup">The work group.</param>
        public Scheduler(IConsumerQueueAsync queue,
                         ISchedulerMessageHandler schedulerMessageHandler,
                         ITaskFactoryFactory factory,
                         IWorkGroup workGroup)
        {
            Guard.NotNull(() => queue, queue);
            Guard.NotNull(() => schedulerMessageHandler, schedulerMessageHandler);
            Guard.NotNull(() => factory, factory);

            _queue = queue;
            _schedulerMessageHandler = schedulerMessageHandler;
            _taskFactory             = new Lazy <ITaskFactory>(factory.Create);

            //if the work group is not set, we are going to just treat it as null
            if (!string.IsNullOrEmpty(workGroup?.Name))
            {
                WorkGroup = workGroup;
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CommitMessageDecorator"/> class.
 /// </summary>
 /// <param name="handler">The handler.</param>
 /// <param name="tracer">The tracer.</param>
 public SchedulerMessageHandlerDecorator(ISchedulerMessageHandler handler, ActivitySource tracer)
 {
     _handler = handler;
     _tracer  = tracer;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CommitMessageDecorator"/> class.
 /// </summary>
 /// <param name="handler">The handler.</param>
 /// <param name="tracer">The tracer.</param>
 public SchedulerMessageHandlerDecorator(ISchedulerMessageHandler handler, ITracer tracer)
 {
     _handler = handler;
     _tracer  = tracer;
 }