【发布时间】:2019-11-20 05:58:37
【问题描述】:
有没有办法使用 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) 中的基准时间?
【问题讨论】:
标签: c# cron quartz-scheduler quartz.net