package com.note.quartz.utils;
import com.note.common.ScheduleJob;
import org.apache.log4j.Logger;
import org.quartz.*;
import org.quartz.DateBuilder.IntervalUnit;
import org.quartz.impl.matchers.GroupMatcher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
;
/**
*
*
* @title: QuartzManager.java
* @description: 计划任务管理
*
*/
@Service
public class QuartzManager {
public final Logger log = Logger.getLogger(this.getClass());
// private SchedulerFactoryBean schedulerFactoryBean
// =SpringContextHolder.getBean(SchedulerFactoryBean.class);
// @Autowired
// @Qualifier("schedulerFactoryBean")
// private SchedulerFactoryBean schedulerFactoryBean;
@Autowired
private Scheduler scheduler;
/**
* 添加任务
*
* @param
* @throws SchedulerException
*/
public void addJob(ScheduleJob job) {
try {
// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
Class<? extends Job> jobClass = (Class<? extends Job>) (Class.forName(job.getBeanClass()).newInstance()
.getClass());
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(job.getJobName(), job.getJobGroup())// 任务名称和组构成任务key
.build();
// 定义调度触发规则
// 使用cornTrigger规则
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(job.getJobName(), job.getJobGroup())// 触发器key
.startAt(DateBuilder.futureDate(1, IntervalUnit.SECOND))
.withSchedule(CronScheduleBuilder.cronSchedule(job.getCronExpression())).startNow().build();
// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(jobDetail, trigger);
// 启动
if (!scheduler.isShutdown()) {
scheduler.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
// public void addJob(ScheduleJob job) throws SchedulerException {
// if (job == null || !ScheduleJob.STATUS_RUNNING.equals(job.getJobStatus())) {
// return;
// }
//
// TriggerKey triggerKey = TriggerKey.triggerKey(job.getJobName(), job.getJobGroup());
//
// CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
//
// // 不存在,创建一个
//
// if (null == trigger) {
// Class<? extends Job> clazz = ScheduleJob.CONCURRENT_IS.equals(job.getIsConcurrent())
// ? QuartzJobFactory.class
// : QuartzJobFactoryDisallowConcurrentExecution.class;
//
// JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(job.getJobName(), job.getJobGroup()).build();
//
// jobDetail.getJobDataMap().put("scheduleJob", job);
//
// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
//
// trigger = TriggerBuilder.newTrigger().withIdentity(job.getJobName(), job.getJobGroup())
// .withSchedule(scheduleBuilder).build();
//
// scheduler.scheduleJob(jobDetail, trigger);
// } else {
// // Trigger已存在,那么更新相应的定时设置
//
// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
//
// // 按新的cronExpression表达式重新构建trigger
//
// trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
//
// // 按新的trigger重新设置job执行
//
// scheduler.rescheduleJob(triggerKey, trigger);
// }
// }
/**
* 获取所有计划中的任务列表
*
* @return
* @throws SchedulerException
*/
public List<ScheduleJob> getAllJob() throws SchedulerException {
GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);
List<ScheduleJob> jobList = new ArrayList<ScheduleJob>();
for (JobKey jobKey : jobKeys) {
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
for (Trigger trigger : triggers) {
ScheduleJob job = new ScheduleJob();
job.setJobName(jobKey.getName());
job.setJobGroup(jobKey.getGroup());
job.setDescription("触发器:" + trigger.getKey());
Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
job.setJobStatus(triggerState.name());
if (trigger instanceof CronTrigger) {
CronTrigger cronTrigger = (CronTrigger) trigger;
String cronExpression = cronTrigger.getCronExpression();
job.setCronExpression(cronExpression);
}
jobList.add(job);
}
}
return jobList;
}
/**
* 所有正在运行的job
*
* @return
* @throws SchedulerException
*/
public List<ScheduleJob> getRunningJob() throws SchedulerException {
List<JobExecutionContext> executingJobs = scheduler.getCurrentlyExecutingJobs();
List<ScheduleJob> jobList = new ArrayList<ScheduleJob>(executingJobs.size());
for (JobExecutionContext executingJob : executingJobs) {
ScheduleJob job = new ScheduleJob();
JobDetail jobDetail = executingJob.getJobDetail();
JobKey jobKey = jobDetail.getKey();
Trigger trigger = executingJob.getTrigger();
job.setJobName(jobKey.getName());
job.setJobGroup(jobKey.getGroup());
job.setDescription("触发器:" + trigger.getKey());
Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
job.setJobStatus(triggerState.name());
if (trigger instanceof CronTrigger) {
CronTrigger cronTrigger = (CronTrigger) trigger;
String cronExpression = cronTrigger.getCronExpression();
job.setCronExpression(cronExpression);
}
jobList.add(job);
}
return jobList;
}
/**
* 暂停一个job
*
* @param scheduleJob
* @throws SchedulerException
*/
public void pauseJob(ScheduleJob scheduleJob) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
scheduler.pauseJob(jobKey);
}
/**
* 恢复一个job
*
* @param scheduleJob
* @throws SchedulerException
*/
public void resumeJob(ScheduleJob scheduleJob) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
scheduler.resumeJob(jobKey);
}
/**
* 删除一个job
*
* @param scheduleJob
* @throws SchedulerException
*/
public void deleteJob(ScheduleJob scheduleJob) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
scheduler.deleteJob(jobKey);
}
/**
* 立即执行job
*
* @param scheduleJob
* @throws SchedulerException
*/
public void runAJobNow(ScheduleJob scheduleJob) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
scheduler.triggerJob(jobKey);
}
/**
* 更新job时间表达式
*
* @param scheduleJob
* @throws SchedulerException
*/
public void updateJobCron(ScheduleJob scheduleJob) throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression());
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
scheduler.rescheduleJob(triggerKey, trigger);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
vue+springboot前后端分离项目源码
共900个文件
xml:181个
class:57个
java:55个
3星 · 超过75%的资源 需积分: 44 168 下载量 201 浏览量
2018-10-09
19:43:43
上传
评论 13
收藏 495KB 7Z 举报
温馨提示
vue+springboot+redis+druid+rabbitmq前后端分离项目源码
资源推荐
资源详情
资源评论
收起资源包目录
vue+springboot前后端分离项目源码 (900个子文件)
00228b38fa6790e2f7c62172672353e3ef248e 159B
0074e09c558c4bafc4596cc517f086841b3adb 81B
00bf472c8ec78057c60000b3808a9ae2322862 2KB
01ec77a2b30e9ddff1f2f9458daae5d985d275 46B
02fa093defc6c3824c3b1874f1eeb16275bac8 276B
035e1fa80a2f62af9025655ebc99f5a66826ef 277B
036c6a61ac9e669abf20298de681618b179a3d 109B
03e89369ed255709ad1d1d5ae7b173d12c0a3b 74B
041dbdaa25bf562352c09cda6e28baa59169e7 1KB
0430ac179cd9e7b914293e99e41c96e7aa8fb5 160B
04f1d7fb416e00b5172f85fac3453182dfbb5f 344B
050ef8946d648ca685a2ddc82ce18ce157c1b0 1KB
050fdba00c8b13b5218586ecb549eb6cb18a0b 79B
051548fac7c45495cd81ab09d550b0310675e9 838B
054674fa06f425c94688c84694826b96ea22e4 146B
0601e9e003b40a3330ded1c5cc53e4bb54b9d5 46B
06d6008d72f334cd3669bc7ab2df9d6cc073f6 165B
0735e28c1b9789cd2903070663fda8e2a72514 403B
08d6fc3a4e45bd45c380dbfc1c8804321e358c 1KB
097225392ee323978b2a05b84dacd8968e1f87 81B
0a1229d056515495cfb4eaf79eceeb9e9b0eca 771B
0b6da2225d1fd930550e130cdb47503fd4419d 191B
0cb0763ae9cd75fa2c6c17eeeaaf1548dc64c3 510B
0e07df3bafc9db6f660de20f3a0c985a98b30e 890B
0e10b859f6a4bb1766d623a02b37cb878835d0 110B
0f1fb3b585e818fe97500889edaad3499408c9 653B
0f802f75c9ae4c5e5c91957a2267cd5963f96c 45B
1070d3a37ff7bfb6b2c5cc1b34e476d8d5bb18 263B
10aef09b1499a7f57a132c5f33710790d80d8a 1KB
117cce02e74ff8781ec939d0f8f76aa32600af 275B
118aaa5fd84ccedef3b6c651f24da50a548b24 46B
1257784fb7eeab8276fd04b1d442e871b7653d 296B
12958b9499fb2cbae66d2b3b3607685490f3e8 82B
12ce3731c41290162888eabdf49d7f64a6653c 826B
130c736d90c160ceaf71b1fc920cbaffa78a80 109B
138d6043acece482ef904cda001a37228fb427 82B
1528068443f1605eb55aa2e4e9fb165f3cc6cf 1KB
168a8b4ae17428537f9501d3f907149295f6bf 46B
1693b9bc5d3a8e6552e79926a385cbb9ca4be8 688B
16c4b8c6ec3d1de6d4b8e3a8acb687a7b4dc49 154B
16cee1f7b4112e1e96f3ef0fdb5d61e556b21a 64B
1758c0e5615b47ec9542e01b4044581b5a4c20 46B
1766b1508a389ba4676046455faab969581fc6 81B
17ddd6c061b20cd94305f4c95cb2d8b4477c2b 46B
18d6abba4aa2ba1247e9349f227eba9e1dfceb 1KB
197fe0e611e5a0352f743f14c00e81eddf4eca 521B
1b776e2554d9921d793125217abeb644220f98 75B
1b8f45df8337e6feed378c1533d53c187e9e3d 1019B
1beca0e4b011125fef0f04c0d4a893f42a3e0f 79B
1c9a210f822cd8b1770450a73b934be7a5857f 268B
1eb50e911d47a90ad42956872f8c6c6aada9c9 125B
1f141dd45c2700b9d33a5f72f0b5e40bf75034 46B
2098a5adc32fdf1b1dda9ca8aa9fddb1652a9a 46B
20c9bfa74720a415392716b333a01a35ba63a1 1KB
216ab1408bf16064c5c11182ecd10e43dd09c8 187B
22041bb4e5f348351428fc74b999c8bcf8c8f7 45B
221203b893a071597733e9ae355c244ef49e65 122B
22a2b986dfa28b9ca82b56dabcf79b19cb1144 120B
22e7496335431abb186dd9552d488f9ab0269e 46B
22fb1e654a5bab4606ff874ed1f39b143bbf1b 810B
2361e38c3c0141a5f820266f3c4559a88f0f6d 145B
236d65586ff73fdf6df18a994a9fda195821fb 985B
242468507588063d93f5ef7773d9d4d7f90dde 139B
2445046168fb4c7bb9fa6eadbc2ecab4b027c2 45B
247f95dc749fcdf3aacdebc01d022e92b19583 1KB
2521c08eece9ea58057fcf65f2f1cb9dd95286 110B
252e2d8a512c6ac30858c1c80affb6454fd486 147B
2578f8d64f24c33374eac9381b0c7cf112f743 138B
259ea77ef70120096729041e35a14621a5ee07 704B
261f984419271c9e8898670b3db4404be1e5bb 114B
266d589ef6764162922cd2e06fcdca80a26926 928B
2691f27dcae7d13c62d1bbaa2c44a5ab7b8ca6 109B
26d180101fc2c387aa1ae6100941ab4997b004 405B
26f32252b6ba76d657bf1f2b9ef34d3013c49d 267B
276096784d427d8b899a0b975ad1c4057261b8 705B
28453cc1e9e367f1b7eb1d7ed5760f27a0e9ea 79B
28e48bc408e1b3f946c2b7e95cf62e0e462695 198B
293efede7f2f50405075530c5f3475b98e53e9 46B
295e80c966592dc6080f15f5d73b0ac15f19d7 607B
2a2eb9b23d7508fafe5d110df19da466a86748 46B
2a6831b25815b78a83c1f4b2d57a473300a0ca 186B
2acc75eb23827043490ff13d8ef2a67b630748 46B
2b84f3509787ec616e089b08b55ffd7d8b54bf 81B
2cb0bcf1f9e7ff3051fedac9843eddeb1194f5 46B
2cbfd6760b48521fb515602f1293620f10ce98 46B
2ce7c5393113bd7dea8547eeb9898e06ef3840 139B
2d4ff0eae21e0084a9f8cd0a07ace25599e1cd 46B
2dfd1890f2850bbf8e29083253522f501ef4d9 65B
2f3731d5db16c4ba805a072242072500480564 45B
2f77579037cee2256ac95511320b67715e9d14 46B
2f8cc6dda0a5bd1b788fb3a204136d05987378 46B
2faab9a8fd10639174c8027ab1fda1efa3b018 426B
2fc04ea7ec4db7b918ecd923f85bd132d2f598 268B
2fceb1cccc0f043612f72a7d3a6e4b1ee601cb 222B
309e697a2c4d91f15b4ec165ea9bd963fea832 46B
3154a176162f1d7a962a7171bfe832a7da6f1e 113B
323a18f23de08b0aa9cee5928ea229056d8f8a 1KB
33e228301a5c00a95e2be7907d5dc890cf85c3 46B
34381124f06e28fb009335a599018ec2ecbcdf 670B
351808e3fa82027cff00f722305a7a56615de3 46B
共 900 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
- 沙小果2019-05-20看着不错。
- 蹲在路边啃螃蟹2019-09-12比较简单,新手入门学习用
- 阳光踏着猫步走来2020-02-26没有数据库,搜了一下,是github上的开源项目
journey_IT
- 粉丝: 15
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功