Quartz 是一个功能强大且广泛使用的开源任务调度框架,它的组成部分包括:
- Job(任务):Job 是需要被调度执行的具体任务逻辑。开发者需要实现 Job 接口,并编写具体的任务逻辑代码。
- JobDetail(任务细节):JobDetail 定义了 Job 的详细信息,包括 Job 的名称、所属的 Job 类型、以及其他属性配置等。每个 Job 都需要对应一个 JobDetail。
- Trigger(触发器):Trigger 定义了 Job 的触发条件和执行策略,决定了 Job 何时执行以及如何执行。可以设置触发器的时间表达式、重复执行间隔、开始时间、结束时间等。
- Scheduler(调度器):Scheduler 是 Quartz 的核心组件,负责按照 Trigger 的定义来触发执行 Job。它负责维护和管理 JobDetail 和 Trigger,执行任务调度的工作。
- JobStore(任务存储):JobStore 是 Quartz 的持久化存储机制,负责将 JobDetail 和 Trigger 的信息存储到数据库中,以便在应用重启后能够恢复任务调度的状态。
- JobExecutionContext(任务执行上下文):JobExecutionContext 提供了在 Job 执行期间访问和操作 JobDetail、Trigger 以及其他相关信息的能力。
- Listener(监听器):Quartz 提供了一些监听器接口,可以通过实现这些接口来监控和响应 Job 的执行过程,例如在任务开始、完成或失败时触发一些操作。
以上组件共同构成了 Quartz 的基本架构,使其能够实现灵活、可靠的任务调度功能。开发者可以通过配置和编码来定制和扩展 Quartz 的功能,满足各种复杂的调度需求。
下面是一个简单的 Quartz 实现案例:
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;public class QuartzExample
{public static void main(String[] args) throws SchedulerException {// 创建 SchedulerFactory 实例SchedulerFactory schedulerFactory = new StdSchedulerFactory();// 获取 Scheduler 实例Scheduler scheduler = schedulerFactory.getScheduler();// 定义一个 JobDetailJobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();// 定义一个 TriggerTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever()).build();// 将 JobDetail 和 Trigger 注册到 Scheduler 中scheduler.scheduleJob(jobDetail, trigger);// 启动 Schedulerscheduler.start();}
}public class MyJob implements Job
{public void execute(JobExecutionContext context) throws JobExecutionException {System.out.println("Job executed!");}
}
在上述示例中,我们创建了一个简单的 Quartz 实例,定义了一个名为 “myJob” 的 JobDetail 和一个名为 “myTrigger” 的 Trigger,并将它们注册到 Scheduler 中。该 JobDetail 关联的 Job 类型是 MyJob,当触发条件满足时,会执行 MyJob 中的 execute 方法。在这个例子中,MyJob 只是简单地输出一条消息。
当程序运行时,Scheduler 将按照 Trigger 的定义来触发执行 MyJob。在本例中,Trigger 设置为每隔 10 秒触发一次,无限重复执行。可以根据具体需求来设置 Trigger 的执行规则。
这是一个基本的 Quartz 实现案例,你可以根据自己的需求进行定制和扩展。
总结:
Quartz组成部分:调度器:scheduler;任务:JobDetail;;角触发器:Trigger,包括SimpleTrigger和CronTrigger
1个job对应多个Trigger
// 绑定jobDetai1 和 trigger,将它注册进Scheduler当中,返回值是最近一次任务执行的开始时间
Date scheduleJob(JobDetail jobDetail,Trigger trigger)
// 启动Scheduler
void start()
// 暂停Scheduler
void standby()
// 关闭Scheduler
void shutdown()
先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!