任务调度工具
定时工具
import cn.hutool.cron.CronUtil;
import cn.hutool.cron.task.Task;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* 定时工具
*/
@Component
@Slf4j
public class CornService {
@Value("${schedule.cornStr:0 1/2 * * * ? }")
private String cornStr;
public static final Map<String, String> cornJobIdToDescMap = Collections.synchronizedMap(new HashMap<>());
@PostConstruct
public void enableCornService(){
enableCornServer(true);
executeTask();
}
/**
* Description: 是否开启定时任务
* @param enable true为开启,false为关闭
*/
public Boolean enableCornServer(Boolean enable){
if (enable) {
//支持秒级别定时任务
CronUtil.setMatchSecond(true);
//定时服务启动
CronUtil.start();
//使用deamon模式
//CronUtil.start(true);
return true;
}
CronUtil.stop();
cornJobIdToDescMap.clear();
return true;
}
/**
* Description: 执行定时任务
*/
public String executeTask() {
// 动态新增定时任务,因为项目启动时已启动定时服务,所以新增后cron条件触发即执行
String jobId = CronUtil.schedule(cornStr, (Task) () -> {
log.info("任务开始");
});
if (!StringUtils.isEmpty(jobId)) {
return jobId;
} else {
return null;
}
}
}
添加配置
# 定时任务重连设备
schedule:
# 每2分钟重连一次
cornStr: 0 0/2 * * * ?