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 ...
随机推荐
- java面向对象4-多态
5 多态 5.1多态:polymorphism概念 定义:某一类事物的多种存在形态表现形式:父类变量指向子类实例 例:动物中猫,狗 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也 ...
- Spring Data JPA基本了解
前言 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之前 EJB 2.x 中实体 B ...
- SpringBoot与jackson.databind兼容报错问题
SpringBoot与jackson.databind兼容报错问题 ———————————————— 1.SpringBoot版本V2.0.0其依赖的jackson-databind版本为V2.9.4 ...
- MFC多文档获取窗口句柄
GET App AfxGetInstanceHandle() AfxGetApp() GET Frame->View->Document SDI AfxGetM ...
- 【错误记录】Python 负数取余问题
print(-123%10) # 输出 7 print(-123%-10) # 输出 -3 这里面第二条是我们一般意义上的取余操作.这里也特别标注一下,如果涉及到负数取余要用上述解决办法. ...
- [论文理解] Squeeze-and-Excitation Networks
Squeeze-and-Excitation Networks 简介 SENet提出了一种更好的特征表示结构,通过支路结构学习作用到input上更好的表示feature.结构上是使用一个支路去学习如何 ...
- mysql 字符串字段中查找非ascii字符
select * from tabel_name where field_name not regexp "^[ -~]*$"
- IE浏览器中图片路径正确< img ... />标签不显示图片
如下图所示,下面的html要去加载上面的jpg图片: 代码如下: <img src="luzhanshi1.jpg" alt="图片加载失败"> 使 ...
- C#程序自动安装数字证书
using System.Security.Cryptography.X509Certificates; MessageBox.Show("开始"); //添加个人证书 X509C ...
- 2018.03.28 python-pandas groupby使用
groupby 分组统计 1.根据某些条件将数据分组 2.对每个组独立应用函数 3.将结果合并到一个数据结构中 Dataframe在行或列上分组,将一个函数应用到各个分组并产生一个新值,然后函数执行结 ...