Java Quartz 任务调度框架使用
Java Quartz 是一个功能强大的开源作业调度框架,广泛应用于 Java 应用程序中,用于管理和执行定时任务。
以下是关于 Quartz 的核心概念和用法的简要介绍:
1. Quartz 的核心组件
Scheduler:调度器是 Quartz 的核心,负责管理任务的执行。通过 SchedulerFactory 创建并启动调度器。
Job:任务的具体实现,需要实现 org.quartz.Job 接口,并重写 execute 方法。
JobDetail:任务的详细信息,包括任务类、任务名和组名等。
Trigger:触发器,定义任务的执行规则,例如时间间隔或 Cron 表达式。
JobStore:任务的存储方式,支持内存存储(RAMJobStore)和数据库存储(JDBCJobStore)
2. 基本用法
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzDemo {
public static void main(String[] args) throws SchedulerException {
// 1. 创建任务
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob", "group1")
.build();
// 2. 创建触发器,每5秒触发一次
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5)
.repeatForever())
.build();
// 3. 创建调度器并启动
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("任务执行时间:" + System.currentTimeMillis());
}
}
3. 进阶功能
Cron 表达式:支持复杂的调度规则,例如每天 8 点执行:
Trigger trigger = TriggerBuilder.newTrigger()
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 8 * * ?"))
.build();
集群支持:通过配置 org.quartz.jobStore.isClustered 为 true,实现多节点任务调度。
持久化:使用 JDBCJobStore 将任务信息存储到数据库中,确保任务不会丢失。
4. 常见问题
时间不准:确保系统时间同步,建议使用 NTP 服务。
任务阻塞:使用 @DisallowConcurrentExecution 注解避免并发问题。
5. Cron 表达式生成工具:http://www.cronmaker.com/
浙公网安备 33010602011771号