Quartz-第四篇 常规quartz的使用
1、目录结构
2、主要文件
1》引入的jar包,quartz-2.2.2解压后lib下所有的jar包
2》quartz.properties
org.quartz.threadPool.threadCount: 2
org.quartz.jobStore.misfireThreshold: 4000
3》SchedulerUtil.java
package com.lfy.scheduler; import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler; public class SchedulerUtil { private static Scheduler scheduler; private static CronTrigger cronTrigger; private static JobDetail jobDetail; public static Scheduler getScheduler() {
return scheduler;
} public static void setScheduler(Scheduler scheduler) {
SchedulerUtil.scheduler = scheduler;
} public static CronTrigger getCronTrigger() {
return cronTrigger;
} public static void setCronTrigger(CronTrigger cronTrigger) {
SchedulerUtil.cronTrigger = cronTrigger;
} public static JobDetail getJobDetail() {
return jobDetail;
} public static void setJobDetail(JobDetail jobDetail) {
SchedulerUtil.jobDetail = jobDetail;
}
}
4》HelloJob.java
package com.lfy.jobdetail; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job { @Override
public void execute(JobExecutionContext arg0) throws JobExecutionException { Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("现在的时间是:"+ sf.format(date));
//具体的业务逻辑
System.out.println("Hello Quartz");
}
}
5》CronTriggerScheduleApp.java
package com.lfy.controller; import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.lfy.jobdetail.HelloJob;
import com.lfy.scheduler.SchedulerUtil; @Controller
@RequestMapping("/App")
public class CronTriggerScheduleApp { @RequestMapping(value="/startQuartz")
public String startQuartz() throws SchedulerException { SchedulerUtil.setScheduler(new StdSchedulerFactory().getScheduler()); SchedulerUtil.setJobDetail(JobBuilder.newJob(HelloJob.class)
.withIdentity("cronJob","group1")
.build()); CronScheduleBuilder cronScheduleBuilder=CronScheduleBuilder.cronSchedule("/6 * * * * ? *");
cronScheduleBuilder.withMisfireHandlingInstructionDoNothing();
SchedulerUtil.setCronTrigger(TriggerBuilder.newTrigger()
.withIdentity("cronTrigger")
.withSchedule(cronScheduleBuilder)
.build());
SchedulerUtil.getScheduler().start();
SchedulerUtil.getScheduler().scheduleJob(SchedulerUtil.getJobDetail(),
SchedulerUtil.getCronTrigger());
return "index";
}
}
6》PauseController.java
package com.lfy.controller; import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.lfy.scheduler.SchedulerUtil; @Controller
@RequestMapping("/PauseController")
public class PauseController { @RequestMapping(value="/pause")
public void pauseCronTrigger() { JobKey jobkey=JobKey.jobKey("cronJob","group1");
Scheduler scheduler=SchedulerUtil.getScheduler();
try {
scheduler.pauseJob(jobkey);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
7》ResumeController.java
package com.lfy.controller; import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.lfy.scheduler.SchedulerUtil; @Controller
@RequestMapping("/ResumeController")
public class ResumeController { @RequestMapping(value="/resume")
public void resumeCronTrigger() { JobKey jobkey=JobKey.jobKey("cronJob","group1");
Scheduler scheduler=SchedulerUtil.getScheduler();
try {
scheduler.resumeJob(jobkey);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
8》AlterTriggerTimeController.java
package com.lfy.controller; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Scheduler;
import org.quartz.TriggerKey;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.lfy.scheduler.SchedulerUtil; @Controller
@RequestMapping("/RescheduleController")
public class AlterTriggerTimeController { @RequestMapping(value="/reschedule")
public void rescheduleCronTrigger() { String newCron="/3 * * * * ? *";
TriggerKey triggerKey = TriggerKey.triggerKey("cronJob","group1"); try {
Scheduler sched = SchedulerUtil.getScheduler();
CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
if (trigger == null) {
return;
}
String oldTime = trigger.getCronExpression();
if (!oldTime.equalsIgnoreCase(newCron)) {
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(newCron);
// 按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
// 按新的trigger重新设置job执行
sched.rescheduleJob(triggerKey, trigger);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
9》DeleteController.java
package com.lfy.controller; import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.TriggerKey;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.lfy.scheduler.SchedulerUtil; @Controller
@RequestMapping("/DeleteController")
public class DeleteController { @RequestMapping(value="/delete")
public void deleteCronTrigger() { TriggerKey triggerKey = TriggerKey.triggerKey("cronJob","group1");
JobKey jobKey = JobKey.jobKey("cronJob","group1");
try {
Scheduler sched = SchedulerUtil.getScheduler();
sched.pauseTrigger(triggerKey);// 停止触发器
sched.unscheduleJob(triggerKey);// 移除触发器
sched.deleteJob(jobKey);// 删除任务
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Quartz-第四篇 常规quartz的使用的更多相关文章
- Quartz教程四:Trigger
原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣 ...
- Spring+Quartz 整合一:常规整合
步骤一: 定时任务需要一个配置文件(spring-mvc-timeTask.xml 随便起名),将其在web.xml中加载 <context-param> <param-name&g ...
- 四)Spring + Quartz
使用Quartz默认配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- Quartz-第一篇 认识Quartz
1.什么是Quartz Quartz是一个任务调度框架,借助Cron表达式,Quartz可以支持各种复杂的任务调度.JDK中也提供了简单的任务调度,java.util.Timer. Quartz的三大 ...
- Quartz.Net系列(十五):Quartz.Net四种修改配置的方式
案例:修改默认线程个数 1.NameValueCollection System.Collections.Specialized.NameValueCollection collection = ne ...
- quartz详解3:quartz数据库集群-锁机制
http://blog.itpub.NET/11627468/viewspace-1764753/ 一.quartz数据库锁 其中,QRTZ_LOCKS就是Quartz集群实现同步机制的行锁表,其表结 ...
- 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)
解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...
- 第四篇 Replication:事务复制-订阅服务器
本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...
- 第四篇 Integration Services:增量加载-Updating Rows
本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...
随机推荐
- 《Python3-标准库》讲解
一.string:文本常量和模板 函数:capwords()-------------------------------------------------- import string s = ...
- C++常用速查
int main() { int arr[2][5] = { {1,8,12,20,25}, {5,9,13,24,26} }; } void f(double p[][10]) { } #inclu ...
- 【NOIP2014模拟11.3】蛋糕
题目 今天是Bessie的生日,他买了一个蛋糕和朋友们一起分享,蛋糕可以看成是一个R行C列的表格,共有R*C个格子,每个格子都有一个0至9的数字,表示该格子蛋糕拥有的巧克力.现在Bessie要把蛋糕横 ...
- 【leetcode】1208. Get Equal Substrings Within Budget
题目如下: You are given two strings s and t of the same length. You want to change s to t. Changing the ...
- GO语言学习笔记4-int与string类型转换
int与string类型之间相互转换可以借助strconv包里自带的函数实现. 1.string转换成int 函数原型: // base指定进制(2到36),如果base为0,则会从字符串前置判断, ...
- 选择vim编辑器的7个理由
当我刚刚开始用 vi 文本编辑器的时候,我讨厌它!我认为这是有史以来设计上最痛苦和反人类的编辑器.但我还是决定我必须学会它,因为如果你使用的是 Unix,vi 无处不在并且是唯一一个保证你可以使用的编 ...
- 命令行创建 vue 项目(仅用于 Vue 2.x 版本)
1 .安装 Node.js 和 npm ( 验证安装成功输入下图 1 命令行可得 2:输入命令行 3 可得 4 即安装成功) 2.安装全局 webpack (安装依照下图输入命令行 1 耐心等待至到出 ...
- 2019.9.23JAVA动手动脑
1请看以下代码,你发现了有什么特殊之处吗? // MethodOverload.java// Using overloaded methods public class MethodOverload ...
- Spring Boot教程(二十二)使用Swagger2构建强大的RESTful API文档(1)
由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...
- Spotlight_on_windows 安装和监控
一.下载 1.下载并安装Spotlight_on_windows 2.填写注册码 Authorization Key:295713336449229168750 Site Message:Bergel ...