前言
工作中需要通过定时调度传输数据到其它系统,本次使用Spring Boot的@Scheduled注解来实现
一、创建调度类Scheduler
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
@Component
public class Scheduler {
/**
* 配置调度使用 .
* 0 0 0,8,12,18 * * ? -----每天0,8,12,18点执行 .
* 0 0 * * * ? -----每个整点执行 .
* 0 0(*)/1 * * * ? -----每分钟执行 .
* 0(*)/10 * * * * ? -----每10秒执行 .
*/
@Scheduled(cron = "${jobs.main.cron}")
@SchedulerLock(name = "test", lockAtMostFor = "60s", lockAtLeastFor = "10s") // 锁最多保持60秒,最少保持10秒
public void testJob() {
//执行调度
}
}
二、配置cron表达式配置文件
#内网配置
server:
port: 8077
jobs:
main:
cron: 0 */1 * * * ?
detail:
cron: 0 */2 * * * ?
state:
cron: 0 */3 * * * ?
outerSync:
cron: 0 */4 * * * ?
innerSync:
cron: 0 */5 * * * ?
invoiceToSap:
cron: 0 */6 * * * ?
三、开启调度启动注解
@EnableScheduling