如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在
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有几个不同的构造函数,下面我们来看看这结果构造函数:
SimpleTrigger有几个不同的构造函数,下面我们来看看这结果构造函数:
One of SimpleTrigger's Constructors
public SimpleTrigger(string name,
string group,
DateTime startTime,
NullableDateTime endTime endTime,
int repeatCount,
long repeatInterval)
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);
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);
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);
"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,如需转载请自行联系原作者