public async Task AddOrUpdateJob(Job job, CancellationToken ct) { var jobResult = scheduledJobBuilder.BuildJob(job); if (jobResult.IsFailure) { logger.LogError($"{jobResult.Error}. Message: {job}"); return; } var triggerResult = scheduledJobBuilder.BuildTriggers(job); if (triggerResult.IsFailure) { logger.LogError($"{triggerResult.Error}. Message: {job}"); return; } await RemoveJobIfAlreadyExists(job.JobIdentifier, job.SubscriptionName, ct); if (job.IsActive) { await scheduler.ScheduleJob(jobResult.Value, triggerResult.Value, false, ct); } }
public void StartAt_On_Trigger_Should_Match_Whats_In_The_Message_Schedule() { var job = DefaultJob; var startAt = DateTime.Now.AddMinutes(3).ToUniversalTime(); job.Update(null, startAt, null, RepeatEndStrategy.Never, RepeatInterval.Monthly, 0, "test"); var triggers = scheduledJobBuilder .BuildTriggers(job) .Value; triggers[0].StartTimeUtc.Should().BeCloseTo(startAt, 1000); }