【视频&交流平台】
http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share
http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share
https://gitee.com/happyangellxq520/spring-boot
http://412887952-qq-com.iteye.com/blog/2321532
在上一篇文章中我们谈到了Quartz,在这接下的博客中,我们将会对Quartz有所了解和学习。在这篇文章我们,我们主要来简单的认识下Quartz,已经会的童鞋可以跳过此篇博客,当然本篇文章也只是抛砖引玉下,对于Quartz介绍的文章太多了,大家可以根据需要进行深入的学习。看下本篇文章的大纲:
(2)Quartz的特点;
(3)Quartz专用词汇说明;
(4)Quartz任务调度基本实现原理;
接下来看下具体的内容:
(1)什么是Quartz?
Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类。
(2)Quartz的特点;
作为一个优秀的开源调度框架,Quartz 具有以下特点:
① 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求;
② 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式;
③ 分布式和集群能力,Terracotta 收购后在原来功能基础上作了进一步提升。
④ Quartz 很容易与 Spring 集成实现灵活可配置的调度功能。
(3)Quartz专用词汇说明;
下面是本文中用到的一些专用词汇,在此声明:
scheduler:
任务调度器
trigger:
触发器,用于定义任务调度时间规则
job:
任务,即被调度的任务
misfire:
错过的,指本来应该被执行但实际没有被执行的任务调度
(4)Quartz任务调度基本实现原理;
Quartz 任务调度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任务调度的元数据, scheduler 是实际执行调度的控制器。
在 Quartz 中,trigger 是用于定义调度时间的元素,即按照什么时间规则去执行任务。Quartz 中主要提供了四种类型的 trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,和 NthIncludedDayTrigger。这四种 trigger 可以满足企业应用中的绝大部分需求。
在 Quartz 中,job 用于表示被调度的任务。主要有两种类型的 job:无状态的(stateless)和有状态的(stateful)。对于同一个 trigger 来说,有状态的 job 不能被并行执行,只有上一次触发的任务被执行完之后,才能触发下一次执行。Job 主要有两种属性:volatility 和 durability,其中 volatility 表示任务是否被持久化到数据库存储,而 durability 表示在没有 trigger 关联的时候任务是否被保留。两者都是在值为 true 的时候任务被持久化或保留。一个 job 可以被多个 trigger 关联,但是一个 trigger 只能关联一个 job。
在 Quartz 中, scheduler 由 scheduler 工厂创建:DirectSchedulerFactory 或者 StdSchedulerFactory。 第二种工厂 StdSchedulerFactory 使用较多,因为 DirectSchedulerFactory 使用起来不够方便,需要作许多详细的手工编码设置。 Scheduler 主要有三种:RemoteMBeanScheduler, RemoteScheduler 和 StdScheduler。本文以最常用的 StdScheduler 为例讲解。这也是笔者在项目中所使用的 scheduler 类。
视频&交流平台:
http://study.163.com/course/introduction.htm?courseId=1004329008
http://412887952-qq-com.iteye.com/blog/2321532
相关推荐
import org.springframework.scheduling.quartz.SchedulerFactoryBean; @Configuration public class QuartzConfig { @Autowired private SchedulerFactoryBean schedulerFactoryBean; public void init() { ...
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 配置Quartz属性 --> <property name="configLocation" value="classpath:quartz.properties"/> <!...
以下将详细介绍如何在Spring Boot应用中使用YAML文件配置Quartz定时任务,以及涉及的Spring Cloud Alibaba、Dubbo和Nacos的相关知识。 首先,我们需要在`pom.xml`中引入相关的依赖。Spring Boot的`spring-boot-...
1. 定义Job接口:Spring Boot中的Job需要实现`org.springframework.batch.core.Job`接口,但是这里我们使用Quartz,所以需要实现`org.quartz.Job`接口。例如: ```java import org.quartz.Job; import org.quartz....
在IT行业中,Spring Boot和Quartz是两个非常重要的框架,它们在企业级应用开发中扮演着关键角色。Spring Boot简化了Spring应用的初始搭建以及开发过程,提供了开箱即用的功能,而Quartz则是一个强大的任务调度库,常...
接下来,创建一个Quartz作业类(Job)并实现`org.quartz.Job`接口。这个类将定义实际要执行的任务。例如: ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz....
import org.springframework.scheduling.quartz.QuartzJobBean; public class EmailReportJob extends QuartzJobBean { @Autowired private JavaMailSender mailSender; // 数据库操作相关服务,例如Report...
最后,定义一个实现了`org.quartz.Job`接口的类,作为具体执行的任务。 【分布式任务调度】 在分布式环境下,为了保证任务的一致性和可靠性,schedule-job系统可能采用了以下策略: 1. **集群部署**:多个调度...
quartz.jobStore.type=org.quartz.impl.jdbcjobstore.StdJDBCJobStore quartz.jobStore.dataSource=myDS quartz.dataSource.myDS.driverClass=com.mysql.jdbc.Driver quartz.dataSource.myDS.URL=jdbc:mysql://...
spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...
该项目是一款基于Spring Boot 2.x和Quartz框架构建的CRUD任务管理系统源码,共计1636个文件,涵盖760个SVG图形文件、640个PNG图片文件、56个CSS样式文件、25个JavaScript脚本文件、22个SQL脚本文件、18个LESS和SCSS...
Spring Boot 是一个流行的Java开发框架,它简化了创建独立、生产级别的基于Spring的应用程序。而Quartz是Java领域中广泛使用的任务调度库,能够帮助开发者安排和执行周期性任务。当我们结合Spring Boot与Quartz时,...
在上述代码中,`MyTask`是你自定义的任务类,它需要实现`org.quartz.Job`接口,并重写`execute`方法,以定义任务的具体逻辑。 ```java import org.quartz.JobExecutionContext; import org.quartz....
- `spring-boot-security-example`:介绍如何集成 Spring Security 进行权限控制。 - `spring-boot-mongodb-example`:使用 Spring Data MongoDB 操作 NoSQL 数据库。 - `spring-boot-email-example`:展示如何通过 ...
spring.quartz.properties.org.quartz.scheduler.instanceName=MyScheduler spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_ ``` 然后,创建一个`JobDetail`实体类,用于映射数据库中的定时任务表...
基于spring boot quartz redis实现tui实现页面控LA
基于Spring Boot的Quartz任务调度系统 项目概述 本项目是一个基于Spring Boot和Quartz的任务调度系统,旨在提供灵活的任务管理和调度功能。系统支持多种任务类型,包括Cron表达式任务和单次时间任务,并提供了丰富...
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
<bean id="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> ...
在Spring Boot中,你可以通过实现`org.springframework.scheduling.quartz.JobDetailBean`并使用`@DisallowConcurrentExecution`或`@PersistJobDataAfterExecution`注解来创建可重入或持久化的Job类。例如: ```...