/// <summary> /// Resume (un-pause) the <see cref="T:Quartz.ITrigger"/> with the /// given key. /// <para> /// If the <see cref="T:Quartz.ITrigger"/> missed one or more fire-times, then the /// <see cref="T:Quartz.ITrigger"/>'s misfire instruction will be applied. /// </para> /// </summary> /// <seealso cref="T:System.String"/> public override void ResumeTrigger(TriggerKey triggerKey) { var triggerHashKey = RedisJobStoreSchema.TriggerHashkey(triggerKey); var triggerExists = Db.SetContains(RedisJobStoreSchema.TriggersSetKey(), triggerHashKey); var isPausedTrigger = Db.SortedSetScore(RedisJobStoreSchema.TriggerStateSetKey(RedisTriggerState.Paused), triggerHashKey); var isPausedBlockedTrigger = Db.SortedSetScore(RedisJobStoreSchema.TriggerStateSetKey(RedisTriggerState.PausedBlocked), triggerHashKey); if (triggerExists == false) { return; } //Trigger is not paused, cant be resumed then. if (!isPausedTrigger.HasValue && !isPausedBlockedTrigger.HasValue) { return; } var trigger = RetrieveTrigger(triggerKey); var jobHashKey = RedisJobStoreSchema.JobHashKey(trigger.JobKey); var nextFireTime = trigger.GetNextFireTimeUtc(); if (nextFireTime.HasValue) { if (Db.SetContains(RedisJobStoreSchema.BlockedJobsSet(), jobHashKey)) { SetTriggerState(RedisTriggerState.Blocked, nextFireTime.Value.DateTime.ToUnixTimeMilliSeconds(), triggerHashKey); } else { SetTriggerState(RedisTriggerState.Waiting, nextFireTime.Value.DateTime.ToUnixTimeMilliSeconds(), triggerHashKey); } } ApplyMisfire(trigger); }