这是我第一次尝试在 Mule 中使用 Quartz 调度程序。我正在尝试根据我从 DB 获取的 DateTimes 列表来安排流程的开始时间。
为了研究 Quatrz 调度程序的工作并根据 java 中的“时间列表”调度作业,我做了以下示例。
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
public class Main {
public static void main(String[] args) throws SchedulerException {
List<SimpleTrigger> triggerList = scheduleMyJob();
int i=0;
for(SimpleTrigger trigger: triggerList){
JobDetail jobDetail = new JobDetail();
jobDetail.setJobClass(Hellojob.class);
jobDetail.setName("MyJob"+ ++i);
Scheduler jobScheduler = new StdSchedulerFactory().getScheduler();
jobScheduler.start();
jobScheduler.scheduleJob(jobDetail, trigger);
}
}
public static List<SimpleTrigger> scheduleMyJob(){
List<SimpleTrigger> triggerList = new ArrayList<SimpleTrigger>();
SimpleTrigger sTrigger = new SimpleTrigger();
sTrigger.setStartTime(new Date(System.currentTimeMillis()+10000));
sTrigger.setName("C Trigger 1");
triggerList.add(sTrigger);
sTrigger = new SimpleTrigger();
sTrigger.setStartTime(new Date(System.currentTimeMillis()+20000));
sTrigger.setName("C Trigger 2");
triggerList.add(sTrigger);
sTrigger = new SimpleTrigger();
sTrigger.setStartTime(new Date(System.currentTimeMillis()+30000));
sTrigger.setName("C Trigger 3");
triggerList.add(sTrigger);
sTrigger = new SimpleTrigger();
sTrigger.setStartTime(new Date(System.currentTimeMillis()+40000));
sTrigger.setName("C Trigger 4");
triggerList.add(sTrigger);
return triggerList;
}
}
我的 helloJob.java 看起来像..
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class Hellojob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(new Date() +": Hello Quartz World!! "+arg0.getJobDetail().getFullName());
}
}
这很好用,我得到以下输出
Sat Oct 24 15:41:47 IST 2015: Hello Quartz World!! DEFAULT.MyJob1
Sat Oct 24 15:41:57 IST 2015: Hello Quartz World!! DEFAULT.MyJob2
Sat Oct 24 15:42:07 IST 2015: Hello Quartz World!! DEFAULT.MyJob3
Sat Oct 24 15:42:17 IST 2015: Hello Quartz World!! DEFAULT.MyJob4
现在我了解了 Quartz 的工作原理,但是我很难将 java 代码与 mule 中的 Quartz 概念联系起来。我想在 mule 中实现完全相同的东西,然后我可以用 DB 中的日期替换日期。如果你能指导我或给我看一个例子,那将有很大的帮助。我只知道 Quartz 调度器,如果您有不同的想法,随时欢迎您...
供参考。Hellojob 将被一个带有记录器的流所取代。
[试图在 mule 中实现逻辑最终没有结果。所以我没有在这里发布该代码,因为它可能会错误地假设我的真正目标是什么!!。上面的Java代码就是一个完美的例子]