public override int ProcessItems() { if (_paused) { return(0); } _jobsMutex = Catalog.Preconfigure() .Add(DistributedMutexLocalConfig.Name, ScheduledItem.MutexName) .ConfiguredResolve <IDistributedMutex>(); try { if (_jobsMutex.Wait(TimeSpan.FromMinutes(4))) { var dueCount = 0; using (_jobsMutex) { if (_jobsMutex.Open()) { _dblog.InfoFormat("Worker {0} processing scheduled jobs", _hostEnv.GetCurrentHostIdentifier( HostEnvironmentConstants.DefaultHostScope)); var due = _jobScheduler.GetDue(); dueCount = due.Count(); _log.InfoFormat("Processing {0} due jobs", due.Count()); foreach (var item in due) { _token.ThrowIfCancellationRequested(); _dblog.InfoFormat("Job due, starting {1} {2} : {0}", item.Message, item.Type, item.Route); _jobScheduler.Reschedule(item); var message = JsonConvert.DeserializeObject(item.Message, item.Type); _sender.Send(message, item.Route); } } } return(dueCount); } } catch (Exception ex) { _log.ErrorFormat(string.Format("An Exception was Caught in {0} ERROR: {1}", this.GetType().Name, ex.Message)); } return(0); }