首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >石英SimpleScheduleBuilder基片时间和间距在c#中的应用

石英SimpleScheduleBuilder基片时间和间距在c#中的应用
EN

Stack Overflow用户
提问于 2019-11-20 05:58:37
回答 1查看 973关注 0票数 0

是否有一种方法可以使用Quartz触发器中的基本时间来生成下一个触发时间,方法是添加当前时间,以便在特定时间内分发计划作业,而不是在固定间隔内运行每个计划作业。

例如,当我使用10分钟间隔时,下面的代码工作得很好,生成下一个点火时间为11:20、11:30、11:40等等。但是,如果我有1000个客户,他们都使用10分钟的时间表间隔,它将导致解雇1000个工作在同一时间。

代码语言:javascript
运行
复制
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);
}

输出

代码语言:javascript
运行
复制
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在11:05 (服务器当前时间)使用10分钟间隔安排作业--他的任务应该触发11:05、11:15、11:25、11:35等等。
  2. Client 2使用10分钟间隔安排作业在11:08 (服务器当前时间)--他的任务应该触发11:08、11:18、11:28、11:38等等。

知道吗,我如何在Quartz.net (3.07)中使用基本时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-21 11:13:15

尝试此操作以传递计算的特定启动时间:

代码语言:javascript
运行
复制
var trigger = TriggerBuilder.Create()
    .StartAt(DateTimeOffset.UtcNow)
    .WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(10))
    .Build();

或者使用特定的fluent界面来处理简单的日程安排:

代码语言:javascript
运行
复制
var trigger = TriggerBuilder.Create()
    .StartAt(DateTimeOffset.UtcNow)
    .WithSimpleSchedule(x => x.WithIntervalInMinutes(10).RepeatForever())
    .Build();

您还可以考虑使用更少的触发器,并处理更多的客户端。就像在触发器数据映射中有组标识符,每次调用处理所有组的数据一样。当然取决于你的要求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58947660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档