package com.huang.boot.task;
import com.alibaba.fastjson.JSON;
import com.huang.boot.entity.ScheduleJob;
import org.quartz.*;
/**
* 定时任务工具类
*
*/
public class ScheduleUtils {
private final static String JOB_NAME = "TASK_";
/**
* 获取触发器key
*/
public static TriggerKey getTriggerKey(Integer jobId) {
return TriggerKey.triggerKey(JOB_NAME + jobId);
}
/**
* 获取jobKey
*/
public static JobKey getJobKey(Integer jobId) {
return JobKey.jobKey(JOB_NAME + jobId);
}
/**
* 获取表达式触发器
* @throws Exception
*/
public static CronTrigger getCronTrigger(Scheduler scheduler, Integer jobId) throws Exception {
try {
return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId));
} catch (SchedulerException e) {
throw new Exception("获取定时任务CronTrigger出现异常", e);
}
}
/**
* 创建定时任务
* @throws Exception
*/
public static void createScheduleJob(Scheduler scheduler, ScheduleJob scheduleJob) throws Exception {
try {
//构建job信息
JobDetail jobDetail = JobBuilder.newJob(ScheduleHandler.class).withIdentity(getJobKey(scheduleJob.getJobId())).build();
//表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression())
.withMisfireHandlingInstructionDoNothing();
//按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(scheduleJob.getJobId())).withSchedule(scheduleBuilder).build();
//放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(scheduleJob.JOB_PARAM_KEY, JSON.toJSONString(scheduleJob));
scheduler.scheduleJob(jobDetail, trigger);
//暂停任务
/* if(scheduleJob.getStatus() == ScheduleStatus.PAUSE.getValue()){
pauseJob(scheduler, scheduleJob.getJobId());
}*/
} catch (SchedulerException e) {
throw new Exception("创建定时任务失败", e);
}
}
/**
* 更新定时任务
* @throws Exception
*/
public static void updateScheduleJob(Scheduler scheduler, ScheduleJob scheduleJob) throws Exception {
try {
TriggerKey triggerKey = getTriggerKey(scheduleJob.getJobId());
//表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression())
.withMisfireHandlingInstructionDoNothing();
CronTrigger trigger = getCronTrigger(scheduler, scheduleJob.getJobId());
//按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
//参数
trigger.getJobDataMap().put(ScheduleJob.JOB_PARAM_KEY, JSON.toJSONString(scheduleJob));
scheduler.rescheduleJob(triggerKey, trigger);
//暂停任务
/* if(scheduleJob.getStatus() == ScheduleStatus.PAUSE.getValue()){
pauseJob(scheduler, scheduleJob.getJobId());
}*/
} catch (SchedulerException e) {
throw new Exception("更新定时任务失败", e);
}
}
/**
* 立即执行任务
* @throws Exception
*/
public static void run(Scheduler scheduler, ScheduleJob scheduleJob) throws Exception {
try {
//参数
JobDataMap dataMap = new JobDataMap();
dataMap.put(ScheduleJob.JOB_PARAM_KEY, JSON.toJSONString(scheduleJob));
scheduler.triggerJob(getJobKey(scheduleJob.getJobId()), dataMap);
} catch (SchedulerException e) {
throw new Exception("立即执行定时任务失败", e);
}
}
/**
* 暂停任务
* @throws Exception
*/
public static void pauseJob(Scheduler scheduler, Integer jobId) throws Exception {
try {
scheduler.pauseJob(getJobKey(jobId));
} catch (SchedulerException e) {
throw new Exception("暂停定时任务失败", e);
}
}
/**
* 恢复任务
* @throws Exception
*/
public static void resumeJob(Scheduler scheduler, Integer jobId) throws Exception {
try {
scheduler.resumeJob(getJobKey(jobId));
} catch (SchedulerException e) {
throw new Exception("暂停定时任务失败", e);
}
}
/**
* 删除定时任务
* @throws Exception
*/
public static void deleteScheduleJob(Scheduler scheduler, Integer jobId) throws Exception {
try {
scheduler.deleteJob(getJobKey(jobId));
} catch (SchedulerException e) {
throw new Exception("删除定时任务失败", e);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
springboot jpa quartz动态定时任务
共149个文件
java:53个
class:53个
js:10个
需积分: 24 11 下载量 104 浏览量
2017-12-18
17:59:23
上传
评论
收藏 273KB ZIP 举报
温馨提示
springboot jpa quartz 动态定时任务,任务增加,任务删除,任务修改demo,非常简单
资源推荐
资源详情
资源评论
收起资源包目录
springboot jpa quartz动态定时任务 (149个子文件)
HttpRequestHandler.class 6KB
MyWebSocket.class 5KB
ScheduleUtils.class 5KB
TextWebSocketFrameHandler.class 4KB
ClassroomRepositoryImpl.class 4KB
ScheduleJobServiceImpl.class 3KB
ScheduleHandler.class 3KB
WebsocketChatServer.class 3KB
UserController.class 3KB
ScheduleJobController.class 3KB
Daka.class 3KB
User.class 3KB
ScheduleJob.class 3KB
BaseRepositoryImpl.class 2KB
QuartzConfig.class 2KB
DruidAutoConfiguration.class 2KB
DruidProperties.class 2KB
TestTask.class 2KB
ScheduleRunnable.class 2KB
BaseRepositoryFactoryBean$BaseRepositoryFactory.class 2KB
SimpleSortBuilder.class 2KB
MessageDto.class 2KB
SpringContextUtils.class 2KB
Student.class 2KB
WebsocketChatServerInitializer.class 2KB
StudentGoodDto.class 2KB
ClassroomDto.class 1KB
UserServiceImpl.class 1KB
BaseRepositoryFactoryBean.class 1KB
ClassroomStuNumDto.class 1KB
WsController.class 1KB
StudentRepository.class 1KB
Classroom.class 1KB
ScheduleJobRepository.class 1KB
WebSocketController.class 1KB
StudentBadDto.class 1KB
SimplePageBuilder.class 1KB
ClassroomServiceImpl.class 1KB
ClassroomRepository.class 968B
Application.class 889B
ServletInitializer.class 867B
BaseRepository.class 764B
UserRepository.class 730B
WebSocketConfig.class 722B
WebSocketServiceImpl.class 655B
ResponseMessage.class 529B
ScheduleJobService.class 477B
RequestMessage.class 457B
ClassroomRepositoryCustom.class 402B
UserService.class 376B
ClassroomService.class 361B
JspConfig.class 347B
WebSocketService.class 212B
.classpath 2KB
org.eclipse.wst.common.component 680B
org.eclipse.wst.jsdt.ui.superType.container 49B
style.css 34B
style.css 34B
WebsocketChatClient.html 2KB
ScheduleUtils.java 5KB
MyWebSocket.java 5KB
TextWebSocketFrameHandler.java 4KB
HttpRequestHandler.java 4KB
Daka.java 3KB
ScheduleJob.java 3KB
Application.java 3KB
ScheduleJobServiceImpl.java 2KB
ScheduleJobController.java 2KB
ClassroomRepositoryImpl.java 2KB
UserController.java 2KB
QuartzConfig.java 2KB
JpaConfig.java 2KB
WebsocketChatServer.java 2KB
ScheduleHandler.java 2KB
User.java 2KB
DruidProperties.java 2KB
BaseRepositoryFactoryBean.java 2KB
DruidAutoConfiguration.java 2KB
BaseRepositoryImpl.java 1KB
TestTask.java 1KB
MessageDto.java 1KB
ScheduleJobRepository.java 1KB
Student.java 1KB
StudentRepository.java 1KB
SpringContextUtils.java 1KB
ScheduleRunnable.java 1KB
WebsocketChatServerInitializer.java 1KB
StudentGoodDto.java 1019B
SimpleSortBuilder.java 943B
UserRepository.java 880B
UserServiceImpl.java 851B
ClassroomServiceImpl.java 827B
SimplePageBuilder.java 820B
ClassroomStuNumDto.java 794B
WebSocketServiceImpl.java 774B
WebSocketConfig.java 772B
Classroom.java 720B
WebSocketController.java 717B
ClassroomRepository.java 700B
ClassroomDto.java 655B
共 149 条
- 1
- 2
资源评论
普通网友
- 粉丝: 16
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功