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

  1. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  2. Quartz简单案例

    需求需要开发一个每天定时推送消息给微信用户,第一次接触quartz,简单案例 1. 先编辑要执行的任务 测试类代码 package com.wqq.test.quartz; import org.sp ...

  3. 初识Quartz(入门案例)+常用的Cron表达式

    1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...

  4. Quartz入门案例与介绍(与spring整合)

    Quartz概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或 ...

  5. quartz(3)--spring整合quartz入门案例

    第一步:导入jar <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...

  6. spring boot整合quartz定时任务案例

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  7. Quartz应用实践入门案例一(基于Web环境)

    Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...

  8. Spring中使用quartz插件实现定时任务

    第一步:导入架包 *spring3.2.3版本的架包将spring的各个功能模块给分开了,我们必须将Spring必须依赖的包导入上去 第二步:编写配置文件 <?xml version=" ...

  9. Quartz的基本使用之入门(2.3.0版本)

    一.Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自 ...

随机推荐

  1. 能跨域和跨浏览器的flashcookie for jquery插件

    对于写网站时需要跨域和跨浏览器的可以看看这个. 引入jquery  和 swfstore.min.js 就可以了,蛮简单好用的,会jquery基础就可以咯. mySwfStore.set('myKey ...

  2. 嵌入式Linux驱动学习之路(七)Linux内核启动流程

    编译的内核可能会很大,故这里可以压缩一下.而在内核文件中需要解压,所以就会有一段自解压代码. 在uboot启动内核的时候,调用了函数: thekernel(0,MACH_ID,params_addr ...

  3. [No000043]学习Linux操作系统必备基础知识

    Linux操作系统概述 Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundatio ...

  4. 队列Queue

    java中,Queue是Collection接口的子接口,Queue的实现类很多,如LinkedList类. 实际使用可以用LinkedList写一个Queue类,实现入队.出队.求队长.判空.打印等 ...

  5. HTML DOM 属性 对象

    HTML DOM 属性 对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 所有的都是 节点: 文档是文档节点 所有 HTML 元素是元素节点 所 ...

  6. Kubernetes deployed on multiple ubuntu nodes

    This document describes how to deploy kubernetes on multiple ubuntu nodes, including 1 master node a ...

  7. 关于a标签和submit标签

    a如果没有连接“#”:“javascript:void(0)”;或“(胡乱写一堆)” 这两个标签点击都有刷新功能,所以会清空你的数据.

  8. Meet Python: little notes 3 - function

    Source: http://www.liaoxuefeng.com/ ♥ Function In python, name of a function could be assigned to a ...

  9. 带OUTPUT参数的CLR存储过程

    前面写了一篇<带参数的CLR存储过程>http://www.cnblogs.com/insus/p/4373605.html ,如果我们需要创建一个带OUTPUT返回值. 实现它,可以先了 ...

  10. NOI2018准备Day5

    3个半小时,连看题解带超过了一道二分题.