/// <summary>
        /// Initializes a new instance of the <see cref="ProducerMethodJobQueue" /> class.
        /// </summary>
        /// <param name="jobSchedulerLastKnownEvent">The job scheduler last known event.</param>
        /// <param name="sendJobToQueue">The send job to queue.</param>
        /// <param name="log">The log.</param>
        /// <param name="createJobQueue">The create job queue.</param>
        public ProducerMethodJobQueue(IJobSchedulerLastKnownEvent jobSchedulerLastKnownEvent,
                                      ISendJobToQueue sendJobToQueue,
                                      ILogger log,
                                      IJobTableCreation createJobQueue)
        {
            Guard.NotNull(() => jobSchedulerLastKnownEvent, jobSchedulerLastKnownEvent);
            Guard.NotNull(() => sendJobToQueue, sendJobToQueue);
            Guard.NotNull(() => log, log);
            Guard.NotNull(() => createJobQueue, createJobQueue);

            LastKnownEvent  = jobSchedulerLastKnownEvent;
            _sendJobToQueue = sendJobToQueue;
            Logger          = log;
            _createJobQueue = createJobQueue;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProducerMethodJobQueue" /> class.
        /// </summary>
        /// <param name="jobSchedulerLastKnownEvent">The job scheduler last known event.</param>
        /// <param name="sendJobToQueue">The send job to queue.</param>
        /// <param name="logFactory">The log factory.</param>
        /// <param name="createJobQueue">The create job queue.</param>
        public ProducerMethodJobQueue(IJobSchedulerLastKnownEvent jobSchedulerLastKnownEvent,
            ISendJobToQueue sendJobToQueue,
            ILogFactory logFactory,
            IJobTableCreation createJobQueue)
        {
            Guard.NotNull(() => jobSchedulerLastKnownEvent, jobSchedulerLastKnownEvent);
            Guard.NotNull(() => sendJobToQueue, sendJobToQueue);
            Guard.NotNull(() => logFactory, logFactory);
            Guard.NotNull(() => createJobQueue, createJobQueue);

            LastKnownEvent = jobSchedulerLastKnownEvent;
            _sendJobToQueue = sendJobToQueue;
            Logger = logFactory.Create();
            _createJobQueue = createJobQueue;
        }