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();
+ }
}