diff --git a/pom.xml b/pom.xml index 40c4745e00e73647e6f366b8bb7707b2ed89a47e..8eb72bea3a768115222be631e7676fb64524ba33 100644 --- a/pom.xml +++ b/pom.xml @@ -10,12 +10,14 @@ UTF-8 springboot + 4.2.0 + 1.5.10.RELEASE org.springframework.boot spring-boot-starter-parent - 1.5.2.RELEASE + 1.5.10.RELEASE @@ -29,6 +31,24 @@ spring-boot-starter-test test + + + org.springframework.boot + spring-boot-starter-activemq + + + + org.springframework.kafka + spring-kafka + 2.1.5.RELEASE + + + + + org.apache.rocketmq + rocketmq-client + ${rocketmq.version} + org.springframework.boot @@ -75,7 +95,13 @@ io.springfox springfox-swagger-ui 2.7.0 - + + + com.alibaba + fastjson + 1.2.47 + + spring-boot-quartz diff --git a/src/main/java/com/itstyle/quartz/job/TestJob.java b/src/main/java/com/itstyle/quartz/job/TestJob.java index 90aa1d86fad34aa30ab464284853971c502b6dc4..238b22cc017b7451eed5af50fe4713e88a26ba25 100644 --- a/src/main/java/com/itstyle/quartz/job/TestJob.java +++ b/src/main/java/com/itstyle/quartz/job/TestJob.java @@ -2,25 +2,30 @@ package com.itstyle.quartz.job; import java.io.Serializable; +import com.alibaba.fastjson.JSON; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.itstyle.quartz.service.IJobService; + /** * 实现序列化接口、防止重启应用出现quartz Couldn't retrieve job because a required class was not found 的问题 */ public class TestJob implements Job,Serializable { private static final long serialVersionUID = 1L; - - @Autowired + private static final Logger LOGGER = LoggerFactory.getLogger(TestJob.class); + + @Autowired private IJobService jobService; @Override public void execute(JobExecutionContext context) throws JobExecutionException { - System.out.println(jobService);//注入jobService 执行相关业务操作 - System.out.println("任务执行成功"); + LOGGER.info(JSON.toJSONString( jobService ));//注入jobService 执行相关业务操作 + LOGGER.info("任务执行成功"); } } diff --git a/src/main/java/com/itstyle/quartz/web/JobController.java b/src/main/java/com/itstyle/quartz/web/JobController.java old mode 100644 new mode 100755 index 5c209ff54c1fe27430dc28e0ca7f862c85383ed0..6c6be25193475db42f60de327798be0384fbf4e0 --- a/src/main/java/com/itstyle/quartz/web/JobController.java +++ b/src/main/java/com/itstyle/quartz/web/JobController.java @@ -1,5 +1,6 @@ package com.itstyle.quartz.web; +import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -58,6 +59,8 @@ public class JobController { JobDetail job = JobBuilder.newJob(cls).withIdentity(quartz.getJobName(), quartz.getJobGroup()) .withDescription(quartz.getDescription()).build(); + + // 触发时间点 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(quartz.getCronExpression()); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger"+quartz.getJobName(), quartz.getJobGroup()) @@ -81,35 +84,34 @@ public class JobController { @PostMapping("/trigger") public Result trigger(QuartzEntity quartz,HttpServletResponse response) { try { - JobKey key = new JobKey(quartz.getJobName(),quartz.getJobGroup()); - scheduler.triggerJob(key); - } catch (SchedulerException e) { - e.printStackTrace(); - return Result.error(); - } - return Result.ok(); - } - @PostMapping("/pause") - public Result pause(QuartzEntity quartz,HttpServletResponse response) { - LOGGER.info("停止任务"); - try { - JobKey key = new JobKey(quartz.getJobName(),quartz.getJobGroup()); - scheduler.pauseJob(key); - } catch (SchedulerException e) { - e.printStackTrace(); - return Result.error(); - } - return Result.ok(); - } - @PostMapping("/resume") - public Result resume(QuartzEntity quartz,HttpServletResponse response) { - LOGGER.info("恢复任务"); - try { - JobKey key = new JobKey(quartz.getJobName(),quartz.getJobGroup()); - scheduler.resumeJob(key); + + LOGGER.info("触发任务 "+ JSON.toJSONString(quartz) ); + //由原来的出发一次变成启动任务 +// JobKey key = new JobKey(quartz.getJobName(),quartz.getJobGroup()); + +// scheduler.triggerJob(key); + + //重新启动任务 + JobKey jobKey = JobKey.jobKey(quartz.getJobName(), quartz.getJobGroup()); + JobDetail jobDetail = scheduler.getJobDetail(jobKey); + + TriggerKey triggerKey = TriggerKey.triggerKey("trigger"+quartz.getJobName(), quartz.getJobGroup()); + Trigger trigger = scheduler.getTrigger(triggerKey); + + LOGGER.info(JSON.toJSONString(jobKey)+"\n"+ scheduler.checkExists(jobKey) + +"\n"+JSON.toJSONString(triggerKey)+"\n"+scheduler.checkExists(triggerKey)); + + if(scheduler.checkExists(jobKey)&&scheduler.checkExists(triggerKey)){ + scheduler.resumeJob(jobKey); + }else{ + scheduler.scheduleJob(jobDetail, trigger); + } } catch (SchedulerException e) { e.printStackTrace(); return Result.error(); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); } return Result.ok(); } @@ -122,14 +124,33 @@ public class JobController { // 停止触发器 scheduler.pauseTrigger(triggerKey); // 移除触发器 - scheduler.unscheduleJob(triggerKey); + scheduler.unscheduleJob(triggerKey); // 删除任务 - scheduler.deleteJob(JobKey.jobKey(quartz.getJobName(), quartz.getJobGroup())); - System.out.println("removeJob:"+JobKey.jobKey(quartz.getJobName())); + scheduler.deleteJob(JobKey.jobKey(quartz.getJobName(), quartz.getJobGroup())); + LOGGER.info("removeJob:"+JobKey.jobKey(quartz.getJobName())); } catch (Exception e) { e.printStackTrace(); return Result.error(); } return Result.ok(); } + @ApiOperation(value="暂停任务") + @PostMapping("/stop_task") + public Result stop_task(QuartzEntity quartz,HttpServletResponse response) { + try { + +// TriggerKey triggerKey = TriggerKey.triggerKey(quartz.getJobName(), quartz.getJobGroup()); +// // 停止触发器 +// scheduler.pauseTrigger(triggerKey); +// // 移除触发器 +// scheduler.unscheduleJob(triggerKey); + //暂停任务 + scheduler.pauseJob(JobKey.jobKey(quartz.getJobName(), quartz.getJobGroup())); + LOGGER.info("pauseJob:"+JobKey.jobKey(quartz.getJobName())); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); + } + return Result.ok(); + } }