-
Notifications
You must be signed in to change notification settings - Fork 35
使用Quartz实现定时作业
Yizzuide edited this page Jan 2, 2020
·
4 revisions
1.18.0+
当前文档使用的版本为1.18.1,使用以下坐标安装:
<dependency>
<groupId>com.github.yizzuide</groupId>
<artifactId>milkomeda-spring-boot-starter</artifactId>
<version>1.18.1</version>
</dependency>
<!-- quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
spring:
quartz:
# 任意取个调度器别名
scheduler-name: neutron
# 是否覆盖已存在的job
overwrite-existing-jobs: true
# 强制关闭任务时,是否等待任务执行完成
wait-for-jobs-to-complete-on-shutdown: true
@EnableNeutron
@SpringBootApplication
public class MilkomedaDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MilkomedaDemoApplication.class, args);
}
}
@RestController
@RequestMapping("neutron")
public class NeutronController {
private static String jobName = "neutron_rotation";
@RequestMapping("add")
public ResponseEntity<?> add() {
Neutron.addJob(jobName, NeutronJob.class, "1/5 * * * * ?");
// 动态添加实现
// String clazzName = 从数据库读取配置的class
// Class clazz = Class.forName(clazzName)
// Neutron.addJob(jobName, (Class<? extends Job>)clazz, "1/5 * * * * ?")
return ResponseEntity.status(HttpStatus.OK).build();
}
@RequestMapping("remove")
public ResponseEntity<?> remove() {
Neutron.removeJob(jobName);
return ResponseEntity.status(HttpStatus.OK).build();
}
@RequestMapping("update")
public ResponseEntity<?> update() {
Neutron.modifyJobTime(jobName, "* * * * * ?");
return ResponseEntity.status(HttpStatus.OK).build();
}
}