任务调度工具

定时工具

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 * * * ?
posted @ 2024-02-19 14:07  黄河大道东  阅读(6)  评论(0编辑  收藏  举报