文章目录
前言
最近跟的一个系统需要实时监控主机的应用进程以及存储空间等,实时生成告警提醒,这就需要在规定的时间去触发消息提醒功能,在这里主要也是用到了Quartz来调度任务的。
一、介绍
Quartz作为 Spring 默认的调度框架,与 Spring 集成实现灵活可配置的调度功能,此外其支持多种调度方法,应用方式灵活,并具有分布式和集群能力。
应用场景:
- 驱动流程:比如在确定时间后根据任务完成情况触发一个警告并通知
- 系统维护:在具体时间点调度一个数据从数据库转到xml文件中
- 在应用中提供消息提醒服务
二、使用步骤
1.创建maven工程,添加依赖
下载quartz的jar包,导入依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
2.创建任务
(1)创建一个类实现quartz提供的Job接口
(2)实现Job接口定义的execute方法,定义任务逻辑
代码如下(示例):
public class MyJob implements Job {
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
public void execute(JobExecutionContext jobExecutionContext)
throws JobExecutionException {
//执行任务的逻辑
String time = sdf.format(new Date());
System.out.println("~~~~~"+time);
}
}
3.启动任务
使用任务调度器Scheduler进行任务管理
- 启动任务
- 暂停任务
- 继续任务
- 停止任务
package com.qfedu.job;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
public class QuartzTest {
public static void main(String[] args) {
try {
//1.创建Quartz的任务调度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//2.创建触发器:定义了任务调度的时机(延时、循环、定时...)
// simpleScheduleBuilder对象表示任务的触发规则
SimpleScheduleBuilder simpleScheduleBuilder =
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(3)
.withRepeatCount(10);
SimpleTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity