首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quartz.Net -延迟启动一个简单的触发器

Quartz.Net -延迟启动一个简单的触发器
EN

Stack Overflow用户
提问于 2010-08-19 02:45:54
回答 3查看 8.5K关注 0票数 5

我在Quartz中设置了几个作业,以便按设定的时间间隔运行。问题是,当服务启动时,它会尝试一次启动所有作业……有没有办法使用.xml配置为每个作业添加延迟?

以下是两个作业触发器示例:

代码语言:javascript
复制
 <simple>
    <name>ProductSaleInTrigger</name>
    <group>Jobs</group>
    <description>Triggers the ProductSaleIn job</description>
    <misfire-instruction>SmartPolicy</misfire-instruction>
    <volatile>false</volatile>
    <job-name>ProductSaleIn</job-name>
    <job-group>Jobs</job-group>
    <repeat-count>RepeatIndefinitely</repeat-count>
    <repeat-interval>86400000</repeat-interval>        
  </simple>

 <simple>
    <name>CustomersOutTrigger</name>
    <group>Jobs</group>
    <description>Triggers the CustomersOut job</description>
    <misfire-instruction>SmartPolicy</misfire-instruction>
    <volatile>false</volatile>
    <job-name>CustomersOut</job-name>
    <job-group>Jobs</job-group>
    <repeat-count>RepeatIndefinitely</repeat-count>
    <repeat-interval>43200000</repeat-interval> 
  </simple>

正如你所看到的,有两个触发器,第一个每天重复,下一个每天重复两次。

我的问题是,我希望第一个或第二个作业在另一个作业开始几分钟后开始……(因为它们最终都访问相同的API,并且我不想使请求过载)

是否存在重复延迟或优先级属性?我找不到任何这样说的文档..

EN

回答 3

Stack Overflow用户

发布于 2011-06-23 12:32:15

我知道您是通过XML完成此操作的,但是在代码中,您可以将StartTimeUtc设置为像这样延迟30秒……

代码语言:javascript
复制
trigger.StartTimeUtc = DateTime.UtcNow.AddSeconds(30);
票数 4
EN

Stack Overflow用户

发布于 2016-05-19 09:02:42

这对于您的XML文件来说并不是一个完美的答案--但是通过代码,您可以在构建触发器时使用StartAt扩展方法。

代码语言:javascript
复制
/* calculate the next time you want your job to run - in this case top of the next hour */
var hourFromNow = DateTime.UtcNow.AddHours(1);
var topOfNextHour = new DateTime(hourFromNow.Year, hourFromNow.Month, hourFromNow.Day, hourFromNow.Hour, 0, 0);

/* build your trigger and call 'StartAt' */
TriggerBuilder.Create().WithIdentity("Delayed Job").WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever()).StartAt(new DateTimeOffset(topOfNextHour))
票数 2
EN

Stack Overflow用户

发布于 2011-02-10 00:36:05

您现在可能已经看到了这一点,但是可以链式作业,尽管它不支持开箱即用。

http://quartznet.sourceforge.net/faq.html#howtochainjobs

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

https://stackoverflow.com/questions/3515542

复制
相关文章

相似问题

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