XXL-JOB 运行模式
BEAN模式:任务以JobHandler方式维护在执行器端,结合 JobHandler 属性匹配执行器中任务;
GLUE模式(Java):任务以源码方式维护在调度中心,任务是继承自IJobHandler的Java代码,在执行器项目中运行,可使用@Resource/@Autowire注入执行器中的其他服务;
GLUE模式(Shell):任务以源码方式维护在调度中心,任务是一段 shell 脚本;
GLUE模式(Python):任务以源码方式维护在调度中心,任务是一段 python 脚本;
Quartz架构主要部分:
监听器(Listeners): 用于监控作业和调度器的状态变化。
调度器(Scheduler): 调度器是Quartz的心脏,负责任务调度和执行。
触发器(Triggers): 定义任务的触发规则。
作业(Jobs): 表示具体的任务实现。
作业存储(Job Stores): 存储作业和触发器的信息。
Quartz设计为嵌入式库,可以轻松集成到Java应用中。
其核心依赖于作业存储(Job Store),并支持多实例部署。
Quartz提供两种类型的监听器:作业监听器和调度器监听器。
这些监听器可以回调状态变化,如作业执行情况和调度器状态,为外部监控和日志记录提供便利。
org.quartz.JobKey
Uniquely identifies a JobDetail.
Keys are composed of both a name and group, and the name must be unique within the group.
If only a name is specified then the default group name will be used.
org.quartz.utils.Key#DEFAULT_GROUP
// The default group for scheduling entities, with the value "DEFAULT".
public static final String DEFAULT_GROUP = "DEFAULT";
使用RAMJobStore,job信息存储在内存中 ,
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
没有quartz.properties配置文件时,quartz默认使用 RAMJobStore
手里没剑和有剑不用,不是一回事!
Quartz每次执行任务时,会由JobFactory重新创建一个新Job实例,
此实例默认采用反射newInstance创建且并未交给spring管理,所以在实例化时也无法注入其他spring bean。
可通过自定JobFactory方式解决,在与springboot整合时,QuartzAutoConfiguration自动配置类已经处理了。
推荐在 job 实现类 从 spring 容器中获取依赖的bean ,譬如 使用 SpringUtil.getBean('xxx')
Quartz集群基于数据库实现,主要利用了数据库的悲观锁机制。
Quartz集群中的每个节点是一个独立的Quartz应用,节点之间不会互相通信,通过数据库表来感知 。
为了避免Quartz表和业务表之间互相影响,建议Quartz独立数据库或独立定时任务系统。
org.quartz.core.QuartzSchedulerThread 是 quartz 框架中的一个核心调度线程,主要负责任务的调度。
它通过不断扫描数据库来获取那些已经到点要触发的任务,并将这些任务分配给线程池去执行。
QuartzSchedulerThread 还包含处理循环,用于确定下一个作业何时应该被触发
每日一曲 西海情歌
每日一曲 初恋情人
第一页
上一页
下一页
最后一页