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的使用的更多相关文章

  1. Quartz教程四:Trigger

    原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣 ...

  2. Spring+Quartz 整合一:常规整合

    步骤一: 定时任务需要一个配置文件(spring-mvc-timeTask.xml 随便起名),将其在web.xml中加载 <context-param> <param-name&g ...

  3. 四)Spring + Quartz

    使用Quartz默认配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  4. Quartz-第一篇 认识Quartz

    1.什么是Quartz Quartz是一个任务调度框架,借助Cron表达式,Quartz可以支持各种复杂的任务调度.JDK中也提供了简单的任务调度,java.util.Timer. Quartz的三大 ...

  5. Quartz.Net系列(十五):Quartz.Net四种修改配置的方式

    案例:修改默认线程个数 1.NameValueCollection System.Collections.Specialized.NameValueCollection collection = ne ...

  6. quartz详解3:quartz数据库集群-锁机制

    http://blog.itpub.NET/11627468/viewspace-1764753/ 一.quartz数据库锁 其中,QRTZ_LOCKS就是Quartz集群实现同步机制的行锁表,其表结 ...

  7. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

  8. 第四篇 Replication:事务复制-订阅服务器

    本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...

  9. 第四篇 Integration Services:增量加载-Updating Rows

    本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...

随机推荐

  1. puppet运维自动化之用户管理

    系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户 ...

  2. 【NOIP2016提高A组模拟9.24】总结

    第一题纯模拟,结果那个出题人脑子似乎进水了,空间限制开了1G!!! 导致我捉摸了半天为什么空间要开那么大,最后只能得出上面的结论. 第二题是个矩阵快速幂,比赛上我没把递推式求出来,但是根据各种乱搞,得 ...

  3. hibernate中save()、get()、load()、update()、saveorupdate()、merge()等方法

    1.save()方法 直接传个user对象 session.save(user); 2.get()方法和load()方法 get(): 传id        session.get(UserInfo. ...

  4. try-catch-finally try中有rerun 是否执行finally

    finally块的语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句可能影响也可能不影响try或catch中 return已经确定的返回值,若finally里 ...

  5. springCloud——Eureka、Ribbon理解

    一. 服务注册中心.服务提供者.服务消费者 如何通信? 客户端: 应用主类中配置@EnableDiscoveryClient application.properties中配置defaultZone指 ...

  6. .NET DotnetSpider--WebDrvierSpider(ajax动态加载的数据获取)

    爬虫获取数据时,可能会遇到AJAX加载的页面,如果无法分析出接口的话,就只能使用秘密武器——WebDriverDownloader.不过最好还是分析出接口为好,WebDriver的性能实在是太低了.现 ...

  7. requestAnimationFram

    window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.该方法需要传入一个回调函数作为参数,该回调函数会 ...

  8. A1006

    输入n行员工id以及到达和离开的时间,输出最早到达的员工的id和最晚离开的员工的id 注:字符串赋值函数strcpy(目标字符串,原字符串)字符串之间的赋值使用该函数,需要#include<st ...

  9. 通过web传大文件

    上传文件的jsp中的部分 通过form表单向后端发送请求 <form id="postForm" action="${pageContext.request.con ...

  10. Sublime Text 3 程序运行后中文显示乱码的解决方案

    问题描述: 问题分析: 新建python文件,输入下面代码,测试发现发送给python解释器时,默认为cp936的编码方式,而py文件为UTF-8的编码方式,cp936和UTF-8的编码方式对于英文字 ...