[是否有一种方法可以通过使用Quartz触发器中的基本时间来生成下一个触发时间,方法是添加当前时间以在该特定小时内分配计划的作业,而不是以固定的间隔运行每个计划的作业。
例如,当我使用10分钟间隔时,下面的代码可以正常工作,并生成下一个触发时间,如11:20、11:30、11:40等。但是,如果我有1000个客户,并且所有客户都使用10分钟的计划时间间隔,则将导致同时触发1000个作业。
var trigger = SimpleScheduleBuilder .RepeatMinutelyForever(10) .Build(); var fireTime = trigger.GetFireTimeAfter(DateTime.UtcNow); for (int i = 0; i < 10; i++) { if (fireTime == null) { break; } Console.WriteLine(fireTime.Value.ToLocalTime()); fireTime = trigger.GetFireTimeAfter(fireTime); }
输出
11/20/2019 11:20:00 +05:30 11/20/2019 11:30:00 +05:30 11/20/2019 11:40:00 +05:30 11/20/2019 11:50:00 +05:30 11/20/2019 12:00:00 +05:30 11/20/2019 12:10:00 +05:30 11/20/2019 12:20:00 +05:30 11/20/2019 12:30:00 +05:30 11/20/2019 12:40:00 +05:30 11/20/2019 12:50:00 +05:30
但是如果我可以使用基准时间
任何想法,如何使用Quartz.net (3.07)中的基准时间?
[是否有一种方法可以通过使用Quartz触发器中的基本时间来生成下一个触发时间,方法是添加当前时间以在该特定时间内分配计划的作业,而不是在...上运行每个计划的作业]]
尝试此操作以传递特定的开始时间进行计算:
var trigger = TriggerBuilder.Create()
.StartAt(DateTimeOffset.UtcNow)
.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(10))
.Build();