Quartz SimpleScheduleBuilder,其基本时间和间隔在c#中

问题描述 投票:0回答:1

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

[是否有一种方法可以通过使用Quartz触发器中的基本时间来生成下一个触发时间,方法是添加当前时间以在该特定时间内分配计划的作业,而不是在...上运行每个计划的作业]]

c# cron quartz-scheduler quartz.net
1个回答
0
投票

尝试此操作以传递特定的开始时间进行计算:

var trigger = TriggerBuilder.Create()
    .StartAt(DateTimeOffset.UtcNow)
    .WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(10))
    .Build();
© www.soinside.com 2019 - 2024. All rights reserved.