是否有一种方法可以使用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)中使用基本时间?
发布于 2019-11-21 11:13:15
尝试此操作以传递计算的特定启动时间:
var trigger = TriggerBuilder.Create()
.StartAt(DateTimeOffset.UtcNow)
.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(10))
.Build();
或者使用特定的fluent界面来处理简单的日程安排:
var trigger = TriggerBuilder.Create()
.StartAt(DateTimeOffset.UtcNow)
.WithSimpleSchedule(x => x.WithIntervalInMinutes(10).RepeatForever())
.Build();
您还可以考虑使用更少的触发器,并处理更多的客户端。就像在触发器数据映射中有组标识符,每次调用处理所有组的数据一样。当然取决于你的要求。
https://stackoverflow.com/questions/58947660
复制相似问题