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 还包含处理循环,用于确定下一个作业何时应该被触发
每日一曲 西海情歌
每日一曲 初恋情人
Mycat是一个开源的数据库中间件,主要用于数据库的读写分离、负载均衡以及分库分表等功能,从而提高整体系统的性能与稳定性。
它由Java语言开发的,基于阿里的Cobar产品进行研发和维护
Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强。
第一页
上一页
下一页
最后一页