是否可以通过添加当前时间在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
但是如果可以使用基准时间
- 客户1以10分钟的间隔将作业安排在11:05(服务器的当前时间)-他的作业应触发11:05、11:15、11:25、11:35,依此类推
- 客户2以10分钟的间隔将作业安排在11:08(服务器的当前时间)-他的作业应触发11:08、11:18、11:28、11:38,依此类推
任何想法,如何使用Quartz.net (3.07)中的基准时间?