Quartz.net官方开发指南 第五课: SimpleTrigger

简介:
如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在 2007 8月20日上 11 23 54 秒执行,然后每个隔 10 秒钟重复执行一次,并且这样重复 5 次。那么 SimpleTrigger  就可以满足你的要求。
通过这样的描述,你可能很惊奇地发现 SimpleTrigger 包括这些属性:开始时间,结束时间,重复次数,重复间隔。所有这属性都是你期望它所应具备的,只有 end-time 属性有一些条目与之关联。
重复次数可能是 0 ,正数或者一个常量值 SimpleTrigger.REPEAT_INDEFINITELY 。重复间隔时间属性可能是 0 ,正的 long 型,这个数字以毫秒为单位。注意:如果指定的重复间隔时间是 0 ,那么会导致触发器按照 重复数量 定义的次数并发触发(或者接近并发)。
Quartz.TriggerUtils类对处理这样的循环也提供了很多支持。
EndTime(如果这个属性被设置)属性会覆盖重复次数属性,这对创建一个每隔 10 秒就触发一次直到某个时间结束的触发器非常有用,这就可以不计算开始时间和结束时间之间的重复数量。也可以指定一个结束时间,然后使用 REPEAT_INDEFINITELY 作为重复数量。(甚至可以指定一个大于结束时间之前实际重复次数的整数作为重复次数)。一句话,EndTime属性控制权高于重复次数属性。
    
    SimpleTrigger有几个不同的构造函数,下面我们来看看这结果构造函数:
One of SimpleTrigger's Constructors
public SimpleTrigger(string name, 
                       string group, 
                       DateTime startTime,
                       NullableDateTime endTime endTime, 
                       int repeatCount, 
                       long repeatInterval)
SimpleTrigger Example 1 - Create a trigger that fires exactly once, ten seconds from now
SimpleTrigger trigger = new SimpleTrigger("myTrigger" ,
                                          
null
,
                                          DateTime.Now.AddSeconds(
10
),
                                          
null
,
                                          
0
,
                                          0L)
;
SimpleTrigger Example 2 - Create a trigger that fires immediately, then repeats every 60 seconds, forever
SimpleTrigger trigger2 = new SimpleTrigger("myTrigger" ,
                                
null
,
                                DateTime.Now,
                                
null
,
                                SimpleTrigger.REPEAT_INDEFINITELY,
                                
60 1000);
SimpleTrigger Example 3 - Create a trigger that fires immediately, then repeats every 10 seconds until 40 seconds from now
SimpleTrigger trigger = new SimpleTrigger("myTrigger",
                                          "myGroup",
                                          DateTime.Now,
                                          DateTime.Now.AddSeconds(40),
                                          SimpleTrigger.REPEAT_INDEFINITELY,
                                          10 * 1000);
    
SimpleTrigger Misfire Instructions
—— SimpleTrigger 的未触发指令
未触发 发生时, SimpleTrigger 有几个指令可以用来通知 Quartz 进行相关处理。( 未触发 在上节课中介绍过了)。这些指令以常量形式定义在 SimpleTrigger 本身,这些指令如下:
Misfire Instruction Constants of SimpleTrigger
MISFIRE_INSTRUCTION_FIRE_NOW
MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT
MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT
MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT
MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT
回顾前面的课程你可以知道,每个触发器都有一个 Trigger.MISFIRE_INSTRUCTION_SMART_POLICY 指令可用,并且,这个指令对于每个类型的触发器都是缺省的。





本文转自 张善友 51CTO博客,原文链接:http://blog.51cto.com/shanyou/73999,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南