文章目录
- 一、什么是Quartz
- 二、为什么使用Quartz
- 1、为什么要用定时任务
- 2、为什么使用Quartz
- 三、常见开源定时任务的框架的异同
- 四、Quartz的相关概念
- 五、Quartz的使用(此处讲解使用主要流程)
- 六、开源引擎框架与业务如何结合使用
一、什么是Quartz
quartz是一个定时调度的框架,指定时间内触发执行某个动作;它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。
二、为什么使用Quartz
1、为什么要用定时任务
1)无需手动触发 :无需页面(人工)触发动作;
2)执行时间准确:会在准确的时间内进行业务处理;
3)低耦合:单独为一个动作体,可以自行开关,不影响其他业务功能;
2、为什么使用Quartz
1)目前公司使用较多的定时任务框架为xxl-Job,elastic-Job,此框架都是基于Quartz进行二次开发;
2)有些传统互联网公司定时任务框架还是使用Quartz
三、常见开源定时任务的框架的异同
四、Quartz的相关概念
Quartz 的核心类有以下三部分:
1)任务 Job : 需要实现的任务类,实现 execute() 方法,执行后完成任务;
2)触发器 Trigger : 包括 SimpleTrigger 和 CronTrigger;
3)调度器 Scheduler :任务调度器,负责基于 Trigger触发器,来执行 Job任务
五、Quartz的使用(此处讲解使用主要流程)
1、初始化Quartz的脚本sql
2、编写定时任务执行类DataHandler并继承QuartzJobBean,实现executeInternal方法(与业务结合)
六、开源引擎框架与业务如何结合使用
总结:
常见引擎框架:定时任务框架quartz、规则引擎drools、流程引擎acitiviti等与业务结合的时候,需要在指定的步骤中对业务表进行操作,就可以实现将所需要的信息存入到业务表中,后续把相应的业务表信息与引擎表信息关联就可。例如下方是定时任务执行是的类(需要集成QuartzJobBean)可以进行业务的操作。
/**
* @date 2023/7/11
* 定时任务实现类
*/
@Slf4j
public class DataHandler extends QuartzJobBean {
@Autowired
private IDataLogService dataLogService;
// 定时任务执行的类
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
// 1、context对象可以获取任务id等信息
// 2、业务操作(比如操作业务表,进行采集任务后,再次更新业务表的采集状态)
dataLogService.update();
...
}
}