import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import com.spinach.utis;
import com.spinach.JobDemo;
public class SchedulerManageService implements ApplicationListener {
private static Scheduler scheduler;
@Autowired
private static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SchedulerManageService.class);
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
ApplicationContext appcontext = event.getApplicationContext().getParent();
if (appcontext != null) {
this.logger.info("The application start...");
/* 注册定时任务 */
try {
// 获取Scheduler实例
scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
SpringContextUtils.getBean("fmShedulerManageDao");
// 具体任务
JobDetail job = JobBuilder.newJob(TelegraphService.class).withIdentity("telegraphFileResolve", "group1").build();
/**
* simpleScheduleBuilder 触发时间点,1:间隔时间触发。2:单位时间触发,总共触发多少次。
*/
/*
SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever();
SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule().repeatSecondlyForTotalCount(3, 1);
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow().withSchedule(simpleScheduleBuilder).build();
*/
// 触发时间点
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/1 * * * * ? *");
Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity("telegraphFileResolve", "group1").withSchedule(cronScheduleBuilder).build();
// 交由Scheduler安排触发
scheduler.scheduleJob(job, trigger2);
logger.info("The scheduler register...");
} catch (SchedulerException se) {
logger.error(se.getMessage(), se);
}
}
}
}
class JobDemo implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//定时器执行的方法。
}
}