淺談Quartz的Trigger
阿新 • • 發佈:2018-11-19
一 點睛
1 Trigger是什麼?
Quartz中的Trigger用來告訴排程程式什麼時候觸發。即Trigger物件是用來觸發Job的。
2 Quartz框架中的Tirgger
3 觸發器通用屬性
JobKey:表示job例項的標識,觸發器被觸發時,該指定的job例項會執行。
StartTime:表示觸發器的時間表首次觸發的時間。它的值型別是Java.util.Date。
EndTime:指定觸發器的不再被觸發的時間。它的值型別是Java.util.Date。
二 實戰
1 啟動類
package com.quartz; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.text.SimpleDateFormat; import java.util.Date; public class HelloScheduler { public static void main(String[] args) throws SchedulerException { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Current Time is:" + simpleDateFormat.format(date)); //建立一個JobDetail例項, 將該例項與hellojob class 繫結 JobDetail jobDetail = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob").build(); //演示傳遞引數 //獲取距離當前時間3秒後的時間 date.setTime(date.getTime()+3000); //獲取距離當前時間6秒後的時間 Date endDate = new Date(); endDate.setTime(endDate.getTime()+6000); //建立一個Trigger例項,定義該job立即執行,並且每隔兩秒鐘重複執行一次 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger","group1") .startAt(date) //定義開始執行時間 .endAt(endDate) //定義結束執行時間 .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(2).repeatForever() ).build(); //建立Schedule例項 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.start(); scheduler.scheduleJob(jobDetail,trigger); } }
2 Job類
package com.quartz; import org.quartz.*; import java.text.SimpleDateFormat; import java.util.Date; public class HelloJob implements Job{ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //列印當前執行的時間 Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("+++++++++++++++++++++++++++"); System.out.println("Current Exec Time is:" + simpleDateFormat.format(date)); Trigger curentTrigger=jobExecutionContext.getTrigger(); System.out.println("Start time is:"+ simpleDateFormat.format(curentTrigger.getStartTime())); System.out.println("End time is:"+simpleDateFormat.format(curentTrigger.getEndTime())); JobKey jobKey=curentTrigger.getJobKey(); System.out.println("JobKey info---"+"jobName:"+jobKey.getName()+"jobGroup:"+jobKey.getGroup()); } }
三 執行結果
+++++++++++++++++++++++++++
Current Exec Time is:2018-11-17 09:48:11
Start time is:2018-11-17 09:48:11
End time is:2018-11-17 09:48:14
JobKey info---jobName:myJobjobGroup:DEFAULT
+++++++++++++++++++++++++++
Current Exec Time is:2018-11-17 09:48:13
Start time is:2018-11-17 09:48:11
End time is:2018-11-17 09:48:14
JobKey info---jobName:myJobjobGroup:DEFAULT