使用步骤:
1、需要定时执行的任务:
public classQuartzSrvBean {private Logger logger = LoggerFactory.getLogger(QuartzSrvBean.class);privatePreOrderMonitorService preOrderMonitorService;public voidsetPreOrderMonitorService(
PreOrderMonitorService preOrderMonitorService) {this.preOrderMonitorService =preOrderMonitorService;
}/*** 定时执行任务.....*/
public voidexec() {//记录定时任务日志
logger.info("xxxx定时任务开始执行-------------");boolean isComplete = preOrderMonitorService.execUpdateTask(null);
logger.info("xxxx定时任务isComplete:" +isComplete);
}
}
2、导入依赖
org.quartz-scheduler
quartz
2.2.3
3、配置文件
//增加作业类
一、工作的 bean
//执行作业的method(job)
//需要定时执行的方法
//工作的trigger//简易
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
//石英表达式Corn
//配置调度中心
//解释:
(1)、Job:表示一个任务(工作),要执行的具体内容。
(2)、JobDetail:表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外JobDetail 还包含了这个任务调度的方案和策略。
(3)、Trigger:代表一个调度参数的配置,什么时候去调。
(4)、Scheduler:代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与JobDetail 组合,就可以被 Scheduler 容器调度了
4、此时任务就会根据我们的trigger配置的定时规则,有规律的执行。
石英表达式的小技巧:http://cron.qqe2.com/
5、如何监控 Quartz 的 job 执行状态:运行中,暂停中,等待中?
通过往表(新建一个操作日志表)里插入日志的形式:
1)运行中:通过 JobListener 监听器来实现运行时更改表信息。
2)暂停中:调用 scheduler.pauseTrigger()方法时,更改表中 job 信息。
3)等待中:新添加的 job 默认给其等待中的状态,也是更改表中的 job 信息 但是上面这种形式的麻烦之处是得频繁的往表里插入数据。