spring-boot+quartz实现web页面增删改定时任务
来源:互联网 发布:画江湖之不良人网络剧 编辑:程序博客网 时间:2024/06/12 23:52
spring-boot集成quartz,支持在web页面中添加任务,暂停任务,继续执行任务,修改任务执行周期,测试任务,删除任务,以及quartz集群模式。
添加的任务需要实现Job接口,并有spring管理bean,例如DemoService,DemoService2
这个项目也集成了spring-data,可以用来写业务。
TaskUtil类实现了任务的增加,删除,修改,以及测试:
package com.htxa.wecare.util;import com.htxa.wecare.StartWebApplication;import com.htxa.wecare.model.CronTriggerWithState;import com.htxa.wecare.model.TaskEntity;import org.quartz.*;import org.quartz.impl.StdScheduler;import org.quartz.impl.matchers.GroupMatcher;import org.springframework.stereotype.Component;import javax.annotation.Resource;import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.stream.Collectors;import static org.quartz.CronScheduleBuilder.cronSchedule;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;/** * Description: * * @author <a href="mailto:erdongritian@foxmail.com">chenhao</a> * Create Time: 2017/8/18 10:56 */@Componentpublic class TaskUtil { @Resource private StdScheduler stdScheduler; public String addTask(TaskEntity taskEntity){ try { JobDataMap map = new JobDataMap(); map.put("targetObject", taskEntity.getTaskService()); map.put("targetMethod", "execute"); JobDetail jobDetail = newJob(DetailQuartzJobBean.class).withIdentity(taskEntity.getTaskService()) .usingJobData(map).storeDurably().requestRecovery().build(); CronTrigger cronTrigger=newTrigger().forJob(jobDetail).withIdentity(taskEntity.getTaskService(), Scheduler.DEFAULT_GROUP) .withDescription(taskEntity.getDescription()) .withSchedule(cronSchedule(taskEntity.getCronExpression())).build(); stdScheduler.scheduleJob(jobDetail,cronTrigger); return "SUCCESS"; } catch (ObjectAlreadyExistsException e) { e.printStackTrace(); return e.getMessage(); }catch (RuntimeException e) { e.printStackTrace(); return e.getMessage(); } catch (SchedulerException e) { e.printStackTrace(); return e.getMessage(); }catch (Exception e){ e.printStackTrace(); return e.getMessage(); } } public Boolean deleteTask(String triggerName){ try { TriggerKey triggerKey=new TriggerKey(triggerName, null); JobKey jobKey=new JobKey(triggerName,null); stdScheduler.unscheduleJob(triggerKey); stdScheduler.deleteJob(jobKey); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public String modifySchedule(TaskEntity taskEntity){ try { JobKey jobKey=new JobKey(taskEntity.getTaskService(),null); JobDetail jobDetail=stdScheduler.getJobDetail(jobKey); CronTrigger cronTrigger=newTrigger().forJob(jobDetail).withIdentity(taskEntity.getTaskService(), Scheduler.DEFAULT_GROUP) .withDescription(taskEntity.getDescription()) .withSchedule(cronSchedule(taskEntity.getCronExpression())).build(); TriggerKey triggerKey=new TriggerKey(taskEntity.getTaskService(), null); stdScheduler.rescheduleJob(triggerKey,cronTrigger); return "SUCCESS"; } catch (ObjectAlreadyExistsException e) { e.printStackTrace(); return e.getMessage(); }catch (RuntimeException e) { e.printStackTrace(); return e.getMessage(); } catch (SchedulerException e) { e.printStackTrace(); return e.getMessage(); }catch (Exception e){ e.printStackTrace(); return e.getMessage(); } } public Boolean pauseTase(String triggerName){ try { TriggerKey triggerKey=new TriggerKey(triggerName, null); stdScheduler.pauseTrigger(triggerKey); return true; } catch (SchedulerException e) { e.printStackTrace(); return false; } } public Boolean resumeTask(String triggerName){ try { TriggerKey triggerKey=new TriggerKey(triggerName, null); stdScheduler.resumeTrigger(triggerKey); return true; } catch (SchedulerException e) { e.printStackTrace(); return false; } } public List<CronTriggerWithState> getAllTask(){ List<CronTriggerWithState> list=new ArrayList<>(); try { Set<TriggerKey> triggerKeys=stdScheduler.getTriggerKeys(GroupMatcher.anyTriggerGroup()); for(TriggerKey key:triggerKeys){ CronTriggerWithState trigger=new CronTriggerWithState(); trigger.setCronTrigger((CronTrigger) stdScheduler.getTrigger(key)); trigger.setStateName(stdScheduler.getTriggerState(key).name()); list.add(trigger); } } catch (Exception e) { e.printStackTrace(); } return list; } public Boolean testTask(String taskService){ try { Job job=(Job) StartWebApplication.applicationContext.getBean(taskService); job.execute(null); return true; } catch (Exception e) { e.printStackTrace(); return false; } }}
代码链接:
点击打开链接
阅读全文
0 0
- spring-boot+quartz实现web页面增删改定时任务
- Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查
- quartz与spring整合实现动态任务增删改查
- Spring Boot中实现Quartz动态定时任务
- 【spring-boot】 springboot整合quartz实现定时任务(转载)
- Spring Boot整合Quartz实现定时任务表配置
- spring boot整合quartz实现多个定时任务
- Spring+Quartz实现定时任务
- spring+quartz实现定时任务
- Spring + Quartz 实现定时任务
- Quartz + Spring 实现定时任务
- spring+quartz实现定时任务
- spring+quartz实现定时任务
- Spring+Quartz实现定时任务
- Spring+quartz 实现定时任务
- spring+quartz实现定时任务
- Quartz定时任务+spring 实现
- Spring Boot 定时任务之Quartz
- 2017JAVA面试题附答案
- 获取访问网址出去ip
- TI-CC2640R2-断线不广播
- PAC学习理论:机器学习那些事
- 第一次重构
- spring-boot+quartz实现web页面增删改定时任务
- Android数据结构
- Maven使用简易教程
- ThinkPHP中 if(session('?username'))是什么意思? 关键是那个“?”是什么意思
- Retrofit 标准版post请求 提交jason字符串
- Ubuntu文本界面输入密码始终提示错误 login incorrect 解决办法
- OSX安装nginx和rtmp模块(rtmp直播服务器搭建)
- No qualifying bean of type 'org.apache.velocity.app.VelocityEngine
- iOS performSelector多参数传递解决方案以及objc_msgSend的使用注意事项