タスクスケジューリングQuartz学習(一)SimpleTrigger
3151 ワード
概要:
実際の開発では、多くのタスクスケジューリングのニーズに直面します.
例えば、あるサイトは毎週午前9時にサイトのデータを更新し、同時にメールでユーザーに通知しなければならない.
例えば、あるフォーラムの需要:30分おきにエッセンス記事のRSSファイルを生成し、毎日未明にフォーラムユーザーのポイントランキングを統計し、30分おきにユーザーのロック解除任務を実行する.
このときquartzを用いて実現できる.
いくつかの重要なクラス:
●Job(コネクタ)
●JobDetail:真のタスク内容、タスク自体はJobインタフェースを統合しているが、真のタスクはJobBuilderが反射的にインスタンス化している.●Trigger:トリガ、タスクの開始時間を定義し、主に2種類のSimpleTrigger、CronTriggerに分けられる.CronTriggerは主にquartz式で定義されたタスクを処理するために使用されます.例えば、毎月20日、月曜日などです.●Scheduler:タスクスケジューラ、計画実行者、今私達はする内容(jobdetail)があって、する時間(trigger)があって、次に、この2つの内容を計画タスクSchedulerのオブジェクトの中で埋めて、時間になってそれは自動的に運行することができます
Example:
実際の開発では、多くのタスクスケジューリングのニーズに直面します.
例えば、あるサイトは毎週午前9時にサイトのデータを更新し、同時にメールでユーザーに通知しなければならない.
例えば、あるフォーラムの需要:30分おきにエッセンス記事のRSSファイルを生成し、毎日未明にフォーラムユーザーのポイントランキングを統計し、30分おきにユーザーのロック解除任務を実行する.
このときquartzを用いて実現できる.
いくつかの重要なクラス:
●Job(コネクタ)
public interface Job {
void execute(JobExecutionContext var1) throws JobExecutionException;
}
●JobDetail:真のタスク内容、タスク自体はJobインタフェースを統合しているが、真のタスクはJobBuilderが反射的にインスタンス化している.●Trigger:トリガ、タスクの開始時間を定義し、主に2種類のSimpleTrigger、CronTriggerに分けられる.CronTriggerは主にquartz式で定義されたタスクを処理するために使用されます.例えば、毎月20日、月曜日などです.●Scheduler:タスクスケジューラ、計画実行者、今私達はする内容(jobdetail)があって、する時間(trigger)があって、次に、この2つの内容を計画タスクSchedulerのオブジェクトの中で埋めて、時間になってそれは自動的に運行することができます
Example:
public class MyJob implements Job{
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println(" quartz"+new Date());
}
//SimpleTrigger
public static void simpleTrigger(){
// schedulerFactory scheduler
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler sche=null;
// job, MyJob ; JobDetail
JobDetail jobDetail= JobBuilder.newJob(MyJob.class).withIdentity("test_job1","group1").build();
//
Trigger trigger= TriggerBuilder.newTrigger().withIdentity("trigger_1","group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5) //
.withRepeatCount(5)) //
.build();
try {
// schedulerFactory scheduler
sche=sf.getScheduler();
// jobDetail trigger scheduler
sche.scheduleJob(jobDetail,trigger);
sche.start();
} catch (SchedulerException e) {
e.printStackTrace();
}
finally{
try {
sche.shutdown(true); //
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
}