我有一组日期时间(大约5000个元素),并希望在每个日期时间上执行作业。 数组中的日期时间是自定义的,而不是定期的,所以我不能使用CronTrigger和其他人。 有没有一种简单的方法来创建一个触发器,它会在给定的时间内触发? 是的,我知道每次完成工作后我都可以开始一个新的简单触发器(一次点火,没有重复),但这样对我来说不方便。
答案 0 :(得分:1)
您可以编写自己的触发器并使用它来执行您的工作。如果您使用的是v1.0,则必须创建一个扩展Trigger的类。有关详细信息,请查看docs。如果您运行的是v2.0,则需要扩展AbstractTrigger。
答案 1 :(得分:0)
您可以自定义触发器的日期时间。简单触发器将从您的自定义时间触发n次
public class JobScheduler
{
public static void Start()
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler();
DateTime[] Jobtime = new DateTime[5]; //Array Have Job time
startDate[0] = new DateTime(2015, 6, 3, 16, 57, 0);
startDate[1] = new DateTime(2015, 6, 3, 16, 59, 0);
startDate[2] = new DateTime(2015, 6, 3, 17, 1, 0);
startDate[3] = new DateTime(2015, 6, 3, 17, 4, 0);
for (int i = 1; i < Jobtime.Count(); i++)
{
sched.Start();
string strjob = "job" + i.ToString();
string strgroup = "group" + i.ToString();
string strtigger = "trigger" + i.ToString();
IJobDetail job = JobBuilder.Create<EmailJob>()
.WithIdentity(strjob, strgroup)
.Build();
ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity(strtigger, strgroup)
.StartAt(Jobtime[i])
.Build();
sched.ScheduleJob(job, trigger);
}
}
}