quartz的maven依赖_maven项目集成Quartz定时任务框架,实现批处理功能

1 packagecom.ewp.data.service;2

3 importjava.util.ArrayList;4 importjava.util.Date;5 importjava.util.HashSet;6 importjava.util.List;7

8 importorg.apache.commons.lang3.time.DateFormatUtils;9 importorg.quartz.CronScheduleBuilder;10 importorg.quartz.CronTrigger;11 importorg.quartz.Job;12 importorg.quartz.JobBuilder;13 importorg.quartz.JobDetail;14 importorg.quartz.JobKey;15 importorg.quartz.Scheduler;16 importorg.quartz.SchedulerException;17 importorg.quartz.SimpleScheduleBuilder;18 importorg.quartz.SimpleTrigger;19 importorg.quartz.Trigger;20 importorg.quartz.TriggerBuilder;21 importorg.quartz.TriggerKey;22 importorg.quartz.impl.matchers.GroupMatcher;23 importorg.slf4j.Logger;24 importorg.slf4j.LoggerFactory;25 importorg.springframework.beans.factory.annotation.Autowired;26 importorg.springframework.stereotype.Service;27

28 importcom.ewp.data.quartz.TaskInfo;29 importcom.ewp.data.quartz.exception.ServiceException;30 importcom.ewp.data.util.DateUtil;31

32 /**

33 *34 * @ClassName: TaskService35 * @Description: 任务处理类36 *@authorzxj37 * @date 2018年2月26日38 *39 */

40 @Service41 public classTaskService {42 private static final Logger LOGGER = LoggerFactory.getLogger(TaskService.class);43

44 @Autowired45 privateScheduler scheduler;46

47 /**

48 *49 * @Title: list50 * @Description: 任务列表51 *@param @return参数52 *@returnList 返回类型53 *@throws

54 */

55 public ListqueryJobList() {56 LOGGER.info("TaskService--data-s-->queryJobList()");57 List list = new ArrayList<>();58 try{59 for(String groupJob : scheduler.getJobGroupNames()) {60 for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.groupEquals(groupJob))) {61 List extends Trigger> triggers =scheduler.getTriggersOfJob(jobKey);62 for(Trigger trigger : triggers) {63 Trigger.TriggerState triggerState =scheduler.getTriggerState(trigger.getKey());64 JobDetail jobDetail =scheduler.getJobDetail(jobKey);65 String cronExpression = "";66 String createTime = "";67 String milliSeconds = "";68 String repeatCount = "";69 String startDate = "";70 String endDate = "";71 if (trigger instanceofCronTrigger) {72 CronTrigger cronTrigger =(CronTrigger) trigger;73 cronExpression =cronTrigger.getCronExpression();74 createTime =cronTrigger.getDescription();75 } else if (trigger instanceofSimpleTrigger) {76 SimpleTrigger simpleTrigger =(SimpleTrigger) trigger;77 milliSeconds = simpleTrigger.getRepeatInterval()+ "";78 repeatCount = simpleTrigger.getRepeatCount() + "";79 startDate =DateUtil.getDateStr(80 simpleTrigger.getStartTime(),81 DateUtil.FORMAT_HOUR_DATE_TIME);82 endDate =DateUtil.getDateStr(simpleTrigger.getEndTime(),DateUtil.FORMAT_HOUR_DATE_TIME);83 }84 TaskInfo info = newTaskInfo();85 info.setJobName(jobKey.getName());86 info.setJobGroup(jobKey.getGroup());87 info.setJobDescription(jobDetail.getDescription());88 info.setJobStatus(triggerState.name());89 info.setCronExpression(cronExpression);90 info.setCreateTime(createTime);91

92 info.setRepeatCount(repeatCount);93 info.setStartDate(startDate);94 info.setMilliSeconds(milliSeconds);95 info.setEndDate(endDate);96 list.add(info);97 }98 }99 }100 LOGGER.info("任务的数量为:---------------->" +list.size());101 } catch(SchedulerException e) {102 LOGGER.info("查询任务失败,原因是:------------------>" +e.getMessage());103 e.printStackTrace();104 }105 returnlist;106 }107

108 /**

109 *110 * @Title: setSimpleTrigger111 * @Description: 简单调度112 *@param @paraminputMap113 *@param @return参数114 *@returnBoolean 返回类型115 *@throws

116 */

117 @SuppressWarnings({ "unchecked"})118 public voidsetSimpleTriggerJob(TaskInfo info) {119 LOGGER.info("TaskService--data-s-->setSimpleTriggerJob()" +info);120 String jobName =info.getJobName();121 String jobGroup =info.getJobGroup();122 String jobDescription =info.getJobDescription();123 Long milliSeconds =Long.parseLong(info.getMilliSeconds());124 Integer repeatCount =Integer.parseInt(info.getRepeatCount());125 Date startDate =DateUtil.parseDate(info.getStartDate());126 Date endDate =DateUtil.parseDate(info.getEndDate());127 try{128 TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);//触发器的key值

129 JobKey jobKey = JobKey.jobKey(jobName, jobGroup);//job的key值

130 if(checkExists(jobName, jobGroup)) {131 LOGGER.info(132 "===> AddJob fail, job already exist, jobGroup:{}, jobName:{}",133 jobGroup, jobName);134 throw newServiceException(String.format(135 "Job已经存在, jobName:{%s},jobGroup:{%s}", jobName,136 jobGroup));137 }138 /*简单调度*/

139 SimpleTrigger trigger =(SimpleTrigger) TriggerBuilder140 .newTrigger()141 .withIdentity(triggerKey)142 .startAt(startDate)143 .withSchedule(144 SimpleScheduleBuilder.simpleSchedule()145 .withIntervalInMilliseconds(milliSeconds)146 .withRepeatCount(repeatCount))147 .endAt(endDate).build();148 Class extends Job> clazz = (Class extends Job>) Class149 .forName(jobName);150 JobDetail jobDetail =JobBuilder.newJob(clazz).withIdentity(jobKey)151 .withDescription(jobDescription).build();152 scheduler.scheduleJob(jobDetail, trigger);153 } catch (SchedulerException |ClassNotFoundException e) {154 LOGGER.info("任务添加失败!--->简单调度" +e.getMessage());155 throw new ServiceException("任务添加失败!--->简单调度");156 }157 }158

159 /**

160 *161 * @Title: addJob162 * @Description: 保存定时任务163 *@param @paraminfo 参数164 *@returnvoid 返回类型165 *@throws

166 */

167 @SuppressWarnings("unchecked")168 public voidaddJob(TaskInfo info) {169 LOGGER.info("TaskService--data-s-->addJob()" +info);170 String jobName = info.getJobName(), jobGroup = info.getJobGroup(), cronExpression =info171 .getCronExpression(), jobDescription = info.getJobDescription(), createTime =DateFormatUtils172 .format(new Date(), "yyyy-MM-dd HH:mm:ss");173 try{174 if(checkExists(jobName, jobGroup)) {175 LOGGER.info(176 "===> AddJob fail, job already exist, jobGroup:{}, jobName:{}",177 jobGroup, jobName);178 throw newServiceException(String.format(179 "Job已经存在, jobName:{%s},jobGroup:{%s}", jobName,180 jobGroup));181 }182

183 TriggerKey triggerKey =TriggerKey.triggerKey(jobName, jobGroup);184 JobKey jobKey =JobKey.jobKey(jobName, jobGroup);185

186 CronScheduleBuilder schedBuilder =CronScheduleBuilder187 .cronSchedule(cronExpression)188 .withMisfireHandlingInstructionDoNothing();189 CronTrigger trigger =TriggerBuilder.newTrigger()190 .withIdentity(triggerKey).withDescription(createTime)191 .withSchedule(schedBuilder).build();192

193 Class extends Job> clazz = (Class extends Job>) Class194 .forName(jobName);195 JobDetail jobDetail =JobBuilder.newJob(clazz).withIdentity(jobKey)196 .withDescription(jobDescription).build();197 scheduler.scheduleJob(jobDetail, trigger);198 } catch (SchedulerException |ClassNotFoundException e) {199 LOGGER.info("保存定时任务-->类名不存在或执行表达式错误--->复杂调度" +e.getMessage());200 throw new ServiceException("类名不存在或执行表达式错误");201 }202 }203

204 /**

205 *206 * @Title: edit207 * @Description: 修改定时任务208 *@param @paraminfo 参数209 *@returnvoid 返回类型210 *@throws

211 */

212 public voideditJob(TaskInfo info) {213 LOGGER.info("TaskService--data-s-->editJob()" +info);214 String jobName = info.getJobName(), jobGroup = info.getJobGroup(), cronExpression =info215 .getCronExpression(), jobDescription = info.getJobDescription(), createTime =DateFormatUtils216 .format(new Date(), "yyyy-MM-dd HH:mm:ss");217 try{218 if (!checkExists(jobName, jobGroup)) {219 throw newServiceException(220 String.format("Job不存在, jobName:{%s},jobGroup:{%s}",221 jobName, jobGroup));222 }223 TriggerKey triggerKey =TriggerKey.triggerKey(jobName, jobGroup);224 JobKey jobKey = newJobKey(jobName, jobGroup);225 CronScheduleBuilder cronScheduleBuilder =CronScheduleBuilder226 .cronSchedule(cronExpression)227 .withMisfireHandlingInstructionDoNothing();228 CronTrigger cronTrigger =TriggerBuilder.newTrigger()229 .withIdentity(triggerKey).withDescription(createTime)230 .withSchedule(cronScheduleBuilder).build();231

232 JobDetail jobDetail =scheduler.getJobDetail(jobKey);233 jobDetail.getJobBuilder().withDescription(jobDescription);234 HashSet triggerSet = new HashSet<>();235 triggerSet.add(cronTrigger);236

237 scheduler.scheduleJob(jobDetail, triggerSet, true);238 } catch(SchedulerException e) {239 LOGGER.info("修改定时任务-->类名不存在或执行表达式错误--->复杂调度" +e.getMessage());240 throw new ServiceException("类名不存在或执行表达式错误");241 }242 }243

244 /**

245 *246 * @Title: delete247 * @Description: 删除定时任务248 *@param @paramjobName249 *@param @paramjobGroup 参数250 *@returnvoid 返回类型251 *@throws

252 */

253 public voiddeleteJob(String jobName, String jobGroup) {254 LOGGER.info("TaskService--data-s-->deleteJob()--jobName:" +jobName255 + "jobGroup:" +jobGroup);256 TriggerKey triggerKey =TriggerKey.triggerKey(jobName, jobGroup);257 try{258 if(checkExists(jobName, jobGroup)) {259 scheduler.pauseTrigger(triggerKey);260 scheduler.unscheduleJob(triggerKey);261 LOGGER.info("===> delete, triggerKey:{}", triggerKey);262 }263 } catch(SchedulerException e) {264 LOGGER.info("删除定时任务-->复杂调度" +e.getMessage());265 throw newServiceException(e.getMessage());266 }267 }268

269 /**

270 *271 * @Title: pause272 * @Description: 暂停定时任务273 *@param @paramjobName274 *@param @paramjobGroup 参数275 *@returnvoid 返回类型276 *@throws

277 */

278 public voidpauseJob(String jobName, String jobGroup) {279 LOGGER.info("TaskService--data-s-->pauseJob()--jobName:" +jobName280 + "jobGroup:" +jobGroup);281 TriggerKey triggerKey =TriggerKey.triggerKey(jobName, jobGroup);282 try{283 if(checkExists(jobName, jobGroup)) {284 scheduler.pauseTrigger(triggerKey);285 LOGGER.info("===> Pause success, triggerKey:{}", triggerKey);286 }287 } catch(SchedulerException e) {288 LOGGER.info("暂停定时任务-->复杂调度" +e.getMessage());289 throw newServiceException(e.getMessage());290 }291 }292

293 /**

294 *295 * @Title: resume296 * @Description: 恢复暂停任务297 *@param @paramjobName298 *@param @paramjobGroup 参数299 *@returnvoid 返回类型300 *@throws

301 */

302 public voidresumeJob(String jobName, String jobGroup) {303 LOGGER.info("TaskService--data-s-->resumeJob()--jobName:" +jobName304 + "jobGroup:" +jobGroup);305 TriggerKey triggerKey =TriggerKey.triggerKey(jobName, jobGroup);306 try{307 if(checkExists(jobName, jobGroup)) {308 scheduler.resumeTrigger(triggerKey);309 LOGGER.info("===> Resume success, triggerKey:{}", triggerKey);310 }311 } catch(SchedulerException e) {312 LOGGER.info("重新开始任务-->复杂调度" +e.getMessage());313 e.printStackTrace();314 }315 }316

317 /**

318 *319 * @Title: checkExists320 * @Description: 验证任务是否存在321 *@param @paramjobName322 *@param @paramjobGroup323 *@param @return

324 *@param @throwsSchedulerException 参数325 *@returnboolean 返回类型326 *@throws

327 */

328 private booleancheckExists(String jobName, String jobGroup)329 throwsSchedulerException {330 LOGGER.info("TaskService--data-s-->checkExists()--jobName:" +jobName331 + "jobGroup:" +jobGroup);332 TriggerKey triggerKey =TriggerKey.triggerKey(jobName, jobGroup);333 returnscheduler.checkExists(triggerKey);334 }335

336 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值