public void NextGivenMinuteDateShouldWork() { DateTimeOffset dto = new DateTimeOffset(new DateTime(2011, 11, 14, 23, 59, 0)); var nextGivenMinuteDate = DateBuilder.NextGivenMinuteDate(dto, 0); Assert.AreEqual(15, nextGivenMinuteDate.Day); Assert.AreEqual(0, nextGivenMinuteDate.Hour); Assert.AreEqual(0, nextGivenMinuteDate.Minute); Assert.AreEqual(0, nextGivenMinuteDate.Second); }
protected virtual ITrigger CreateTrigger(string name) { DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 2); return(TriggerBuilder.Create() .WithIdentity(name, "serviceGroups") //.WithCronSchedule("0 0 1 * * ?") //.WithCronSchedule("0 14 0 * * ?") .StartAt(startTime) .Build()); }
public void AddDtu(DtuNode dtu) { if (dtu == null) { return; } _dtus[dtu.DtuId] = dtu; _dtuCodeMap[dtu.DtuCode] = dtu; ScheduleJob(dtu, DateBuilder.NextGivenMinuteDate(null, (int)dtu.DacInterval / 60)); if (!_schedule.IsStarted) { _schedule.Start(); } }
protected override ITrigger CreateTrigger(string name) { DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 1); /* * Seconds Minutes Hours Day-of-Month Month Day-of-Week Year (optional field) * the value “L” in the day-of-month field means “the last day of the month” - day 31 for January, * day 28 for February on non-leap years */ return(TriggerBuilder.Create() .WithIdentity(name, "serviceGroups") //.WithCronSchedule("0 0 1 L * ?") //.WithCronSchedule("0 12 0 17 * ?") .StartAt(startTime) .Build()); }
// 处理 日常采集任务 public void ArrangeTimedTask() { lock (this) { this.CreateSchedule(_dtus.Count); this.InitializeDtuGroups(); IList <DtuNode> nodes = _dtus.Values.ToList(); DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 1); foreach (DtuNode dtu in nodes) { DtuGroup dgp = dtuGroups.FirstOrDefault(d => d.Exists(dtu.DtuCode)); this.ScheduleJob(dtu, startTime, dgp != null ? dgp.DacInterval : dtu.DacInterval); } _schedule.Start(); } }
private async Task RetryJob(IJobExecutionContext context) { var hasRetry = context.MergedJobDataMap.TryGetValue("Retry", out var retry); if (hasRetry) { var trigger = new SimpleTriggerImpl(Guid.NewGuid().ToString()); trigger.Description = "Retry"; trigger.RepeatCount = 0; trigger.JobKey = context.JobDetail.Key; trigger.JobDataMap.Add("IsRetry", true); trigger.StartTimeUtc = DateBuilder.NextGivenMinuteDate(DateTime.Now, (int)retry); await context.Scheduler.ScheduleJob(trigger); } }
public static async void Run() { Debug.WriteLine("Job started to be scheduled"); // Define a scheduler ISchedulerFactory sf = new StdSchedulerFactory(); IScheduler scheduler = await sf.GetScheduler(); await scheduler.Start(); IJobDetail job = JobBuilder.Create <CloudStororageJob>() .WithIdentity("Job1", "Group1") .Build(); //ITrigger trigger = TriggerBuilder.Create() // .WithIdentity("Trigger1", "Group1") // .WithDailyTimeIntervalSchedule // (s => // s.OnEveryDay() // .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(9, 53)) // ) // .Build(); //await scheduler.ScheduleJob(job, trigger); //get a "nice round" time a few seconds in the future... DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 2); ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create() .WithIdentity("Trigger1", "Group1") .StartAt(startTime) .Build(); // schedule it to run! DateTimeOffset?ft = await scheduler.ScheduleJob(job, trigger); Debug.WriteLine("Current time:" + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString()); Debug.WriteLine("Current time UTC:" + DateTime.UtcNow.ToLongDateString() + " " + DateTime.UtcNow.ToLongTimeString()); Debug.WriteLine(job.Key + " will run at: " + ft); Debug.WriteLine("Job has been scheduled"); }
public override async Task StartAsync(CancellationToken cancellationToken) { DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now, 1); DateTimeOffset endTime = DateBuilder.NextGivenMinuteDate(DateTime.Now, 10); IJobDetail job = JobBuilder.Create <LogJob>() .WithIdentity("job", "group") .Build(); ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create() .StartAt(startTime) .EndAt(endTime) .WithIdentity("job", "group") .WithCronSchedule("*/5 * * * * ?") .Build(); await _scheduler.ScheduleJob(job, cronTrigger); await _scheduler.Start(cancellationToken); }
public bool ModifyJobTime(DtuNode dtu) { if (_schedule == null) { return(false); } string triggerKeystr = GetDailyTriggerKey(dtu.DtuId); ITrigger trigger = _schedule.GetTrigger(new TriggerKey(triggerKeystr, JobGroup)); if (trigger != null) { _schedule.PauseJob(new JobKey(GetDailyJobKey(dtu.DtuCode), JobGroup)); TryRemoveJob(dtu.DtuCode); _schedule.UnscheduleJob(new TriggerKey(triggerKeystr, JobGroup)); ScheduleJob(dtu, DateBuilder.NextGivenMinuteDate(null, (int)dtu.DacInterval / 60)); //IJobDetail job = JobBuilder.Create<DTUDacJob>() // .WithIdentity(string.Format("{0}{1}", DailyJobName, dtu.DtuCode), JobGroup) // .Build(); //AssignJobInfo(this, TaskType.TIMED, job, new Guid().ToString(), dtu, null, OnTimedTaskFinished); //// 调度策略 //DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, (int) dtu.DacInterval/60); //开始时间. //// 重复间隔: dtu.DacInterval (秒); //// 重复次数: 无限 //trigger = (ISimpleTrigger) TriggerBuilder.Create() // .WithIdentity(triggerKeystr, JobGroup) // .WithSimpleSchedule(x => x.WithInterval(new TimeSpan(0, 0, (int) dtu.DacInterval)).RepeatForever()) // .StartAt(startTime) // .Build(); //_schedule.ScheduleJob(job, trigger); if (!_schedule.IsStarted) { _schedule.Start(); } return(true); } return(false); }