From ee51cf63147270255f985ce79f2a2ee3406544b8 Mon Sep 17 00:00:00 2001 From: huanghongbo Date: Tue, 17 Apr 2018 22:10:54 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=8A=A0=E5=85=A5json=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 40c4745..225f0e7 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,13 @@ io.springfox springfox-swagger-ui 2.7.0 - + + + com.alibaba + fastjson + 1.2.47 + + spring-boot-quartz -- Gitee From 8f0448b5da85af11a4e3e973be7c039530ca41a7 Mon Sep 17 00:00:00 2001 From: huanghongbo Date: Tue, 17 Apr 2018 22:15:22 +0800 Subject: [PATCH 2/4] =?UTF-8?q?log=E6=96=B9=E5=BC=8F=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/itstyle/quartz/job/TestJob.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/itstyle/quartz/job/TestJob.java b/src/main/java/com/itstyle/quartz/job/TestJob.java index 90aa1d8..238b22c 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("任务执行成功"); } } -- Gitee From ef0dad114ddc51f023e946bedaa6ffea1dd12eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B4=AA=E6=B3=A2?= Date: Tue, 17 Apr 2018 23:20:18 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0pom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 225f0e7..8eb72be 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 -- Gitee From c46b32b4922496af73855023b97cc69efbd6a76e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B4=AA=E6=B3=A2?= Date: Tue, 17 Apr 2018 23:25:47 +0800 Subject: [PATCH 4/4] =?UTF-8?q?log=E6=96=B9=E5=BC=8F=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/itstyle/quartz/web/JobController.java | 79 ++++++++++++------- 1 file changed, 50 insertions(+), 29 deletions(-) mode change 100644 => 100755 src/main/java/com/itstyle/quartz/web/JobController.java 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 5c209ff..6c6be25 --- 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(); + } } -- Gitee