Quratz入门
2024-08-26 01:56:18
一:介绍
1.应用场景
基本上任何公司都会用到调度这个功能, 比如我们公司需要定期执行调度生成报表, 或者比如博客什么的定时更新之类的,都可以靠Quartz来完成。正如官网所说,小到独立应用大到大型电子商务网站, Quartz都能胜任。
2..内部组件结构
Quartz拥有完善的事件和监听体系,大部分组件都拥有事件,如任务执行前事件、任务执行后事件、触发器触发前事件、触发后事件、调度器开始事件、关闭事件等等,可以注册相应的监听器处理感兴趣的事件。
下图描述了Scheduler的内部组件结构,SchedulerContext提供Scheduler全局可见的上下文信息,每一个任务都对应一个JobDataMap,虚线表达的JobDataMap表示对应有状态的任务:
二:普通触发器程序(来自官网)
1.新建maven项目
2.pom文件
这个版本是2.2.1的maven库。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>Quratz</groupId>
<artifactId>job</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
</dependencies> </project>
3.JobDetail代码
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class MyJob implements Job {
public MyJob(){}
public void execute(JobExecutionContext context)throws JobExecutionException{
System.err.println("Hello World! MyJob is executing.");
}
}
4.设置触发器
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory; import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule; public class SchedulerTest { public static void main(String[] args)throws Exception{
Scheduler scheduler=null;
SchedulerFactory schedulerfactory = new StdSchedulerFactory();
scheduler = schedulerfactory.getScheduler();
// define the job and tie it to our MyJob class
JobDetail job = newJob(MyJob.class)
.withIdentity("job1", "group1")
.build(); // Trigger the job to run now
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(5)
.repeatForever())
.build(); // Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// 启动调度
scheduler.start(); Thread.sleep(100); // 停止调度
// scheduler.shutdown();
}
}
5.效果
三:Cron触发程序
1.cron表达式触发器
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory; import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule; public class SchedulerCronTest { public static void main(String[] args)throws Exception{
Scheduler scheduler=null;
SchedulerFactory schedulerfactory = new StdSchedulerFactory();
scheduler = schedulerfactory.getScheduler();
// define the job and tie it to our MyJob class
JobDetail job = newJob(MyJob.class)
.withIdentity("job1", "group1")
.build(); // Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?"))
.build(); // Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// 启动调度
scheduler.start(); Thread.sleep(100); // 停止调度
// scheduler.shutdown();
}
}
7.效果
最新文章
- Content Security Policy 入门教程
- linux配置3-安装tomcat
- sqlalchemy 实体属性提前加载
- 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
- zoj 3717 - Balloon(2-SAT)
- 《C++编程规范》
- CSU 1116 Kingdoms(枚举最小生成树)
- 智能车学习(十五)&mdash;&mdash;K60野火2013版例程
- iOS-常用的辅助工具软件
- POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1
- 幾種方法實現C語言Macro for debug
- iOS 原生二维码扫描,带扫描框和扫描过程动画
- HDU - 1035
- springcloud第七步:fegin客户端调用工具
- Spring+thymeleaf
- SparkContext初始化之SparkScheduler初始化
- redis简记
- iptables -F 与 -X 区别
- 关于Centos7 firewalld防火墙开放端口后仍不能访问ftp和nginx的问题解决
- 蒙特卡罗(Monte Carlo)方法简介
热门文章
- Responsive响应式设计
- SpringBoot定制错误的Json数据
- SpringBoot整合国际化功能
- STM32F103X datasheet学习笔记---GPIOs and AFIOs
- 如何判断mac地址时multicast还是broadcast ?
- dell r720服务器raid5安装centos6.5系统
- 安装最新版的2016版Pycharm后,激活码
- 关于报错stale element reference: element is not attached to the page document处理
- 论文笔记 SSD: Single Shot MultiBox Detector
- 从LeNet-5到DenseNet