quartz使用案例
@Service
public class QuartzServiceImpl extends
BaseServiceImpl<JobDetails, String, QuartzTaskVO> implements
QuartzService { private JobDetailsJpaDao jobDetailsJpaDao; public JobDetailsJpaDao getJobDetailsJpaDao() {
return jobDetailsJpaDao;
} @Autowired
public QuartzServiceImpl(JobDetailsJpaDao jobDetailsJpaDao,
BaseJdbcDao baseJdbcDao) {
super((BaseJpaRepository<JobDetails, String>) jobDetailsJpaDao,
baseJdbcDao);
this.jobDetailsJpaDao = jobDetailsJpaDao;
} @Autowired
private Scheduler scheduler; @ServiceDesc("查询当前活动的任务列表")
@Override
public Map<String, Object> queryActiveTaskMap(JobDetailsQueryParam param) {
SQLQueryUtil util = new SQLQueryUtil();
util.addTable("QRTZ_TRIGGERS");
util.addColumn("SCHED_NAME", "schedule_name");
util.addColumn("JOB_NAME", "job_name");
util.addColumn("JOB_GROUP", "job_group");
util.addColumn("TRIGGER_NAME", "trigger_name");
util.addColumn("TRIGGER_GROUP", "trigger_group");
util.addColumn("PREV_FIRE_TIME", "prev_fire_time");
util.addColumn("NEXT_FIRE_TIME", "next_fire_time");
util.addColumn("START_TIME", "start_time");
util.addColumn("END_TIME", "end_time");
util.addColumn("TRIGGER_STATE", "trigger_state"); return super.queryDataMapNotExtend(util, QuartzTaskVO.class, param);
} @Override
@ServiceDesc("启动任务")
public void startTask(String jobId, String triggerId) throws AppException {
TaskId id = new TaskId(jobId, triggerId);
try {
scheduler.scheduleJob(id.getJobDetails().getJobDetail(), id
.getTriggers().getTrigger());
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
} catch (ClassNotFoundException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} @Override
@ServiceDesc("暂停任务")
public void pauseTask(String... ids) throws AppException {
try {
for (String idStr : ids) {
scheduler.pauseJob(new TaskId(idStr).getJobKey());
}
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} @Override
@ServiceDesc("恢复任务")
public void resumeTask(String... ids) throws AppException {
try {
for (String idStr : ids) {
scheduler.resumeJob(new TaskId(idStr).getJobKey());
}
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} @Override
@ServiceDesc("删除任务")
public void deleteTask(String... ids) throws AppException {
try {
for (String idStr : ids) {
scheduler.deleteJob(new TaskId(idStr).getJobKey());
}
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} } class TaskId { /**
* id字符串格式: jobName:jobGroup;triggerName:triggerGroup
*/
public TaskId(String id) {
this.jobKey = new JobKey(id.split(";")[0].split(":")[0],
id.split(";")[0].split(":")[1]);
this.triggerKey = new TriggerKey(id.split(";")[1].split(":")[0],
id.split(";")[1].split(":")[1]);
} public TaskId(String jobId, String triggerId) {
JobDetailsService jobDetailsService = (JobDetailsService) SpringContextUtil
.getUtil().getBean(JobDetailsService.class);
TriggersService triggersService = (TriggersService) SpringContextUtil
.getUtil().getBean(TriggersService.class);
this.jobDetails = jobDetailsService.get(jobId);
this.triggers = triggersService.get(triggerId);
this.jobKey = new JobKey(jobDetails.getJobName(),
jobDetails.getJobGroup());
this.triggerKey = new TriggerKey(triggers.getTriggerName(),
triggers.getTriggerGroup());
} private JobDetails jobDetails; private Triggers triggers; private JobKey jobKey; private TriggerKey triggerKey; public JobDetails getJobDetails() {
return jobDetails;
} public void setJobDetails(JobDetails jobDetails) {
this.jobDetails = jobDetails;
} public Triggers getTriggers() {
return triggers;
} public void setTriggers(Triggers triggers) {
this.triggers = triggers;
} public JobKey getJobKey() {
return jobKey;
} public void setJobKey(JobKey jobKey) {
this.jobKey = jobKey;
} public TriggerKey getTriggerKey() {
return triggerKey;
} public void setTriggerKey(TriggerKey triggerKey) {
this.triggerKey = triggerKey;
} }
quartz使用案例的更多相关文章
- JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)
1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...
- Quartz简单案例
需求需要开发一个每天定时推送消息给微信用户,第一次接触quartz,简单案例 1. 先编辑要执行的任务 测试类代码 package com.wqq.test.quartz; import org.sp ...
- 初识Quartz(入门案例)+常用的Cron表达式
1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...
- Quartz入门案例与介绍(与spring整合)
Quartz概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或 ...
- quartz(3)--spring整合quartz入门案例
第一步:导入jar <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...
- spring boot整合quartz定时任务案例
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...
- Quartz应用实践入门案例一(基于Web环境)
Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...
- Spring中使用quartz插件实现定时任务
第一步:导入架包 *spring3.2.3版本的架包将spring的各个功能模块给分开了,我们必须将Spring必须依赖的包导入上去 第二步:编写配置文件 <?xml version=" ...
- Quartz的基本使用之入门(2.3.0版本)
一.Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自 ...
随机推荐
- Excel实用操作
目地 不能熟练操作Excel的程序员不是好策划. 一片区域填充相同数据 1.用鼠标框选一片区域,松开鼠标,不要点其它单元格 2.直接输入输入数据,输完之后,按Ctrl+Enter,选中的区域就会填充相 ...
- 微软云Azure Website 远程调试
微软云Azure Website 远程调试 是可以的 但是只有48小时,要在后台开启,所以还是很麻烦的啊! 但是安全性提高了,不得不承认哦
- jmeter 中的 HTTP URL Re-writing Modifier
URL rewriting modifier,因为tomcat的session实现不是通过cookie的,而是通过session id的,就是说,用户登录有了session之后,tomcat就会维护一 ...
- java 23 - 3 单例模式实现Runtime类
Runtime:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. 其中一个方法: exec(String command) 在单独的进程中执行指定的字符串 ...
- ES5特性Object.seal
一个对象在默认状态下: 1,extensible:可扩展(可以添加新的属性) 2,configurable:可配置(可以改变原有属性的特性,比如修改属性的enumerable) Object.seal ...
- Linode Centos6.5从零开始装环境...流水账
安装JDK 下载. 先通过oracle网站, 下载, 得到link后, 在linode命令行里wget, 速度飞快, 但是文件名要改下. 其中JDK6是.bin, 其他都是tar.gz, bin直接执 ...
- two sample ttest & paired ttst
来源:http://www.pinzhi.org/thread-1023-1-1.html 成对t检验Paired Test是对来自同一总体的样本,在不同条件影响下获取的2组样本进行分析,以评价不同条 ...
- oracle:db-link使用
二个oracle instance,如果需要在一个instance上,直接查询另一个instance上的数据,就要用到db-link 创建: create public database link 链 ...
- C#执行XSL转换
xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下面的代码: using System; using System.IO; using System.Text; using Syst ...
- 安卓开发:效果图中标注的像素尺寸如何转换为安卓的dp尺寸?
我们的UI基于1920x1080分辨率给的尺寸标注,但是在安卓开发中大家一般都使用dp.sp来标注界面尺寸,所以需要一个dp与sp的转换公式. 一开始参考的的这篇文章:关于Android开发中px.d ...