elasticJob 动态定时任务 时间转化为定时cron表达式 可以指定具体某一个时间来定时执行一次

指定几秒后或者某个时间点来执行一个动态定时任务

/**
     * 步骤8 动态定时任务 只执行一次 因为格式 是 "ss mm HH dd MM ? yyyy"
     */
    @GetMapping(value = "/task2")
    public Result task2(String jobName, Long time, String id) throws ParseException {
        //在当前时间往后延迟time毫秒执行
//        String cron = ElasticjobDynamicConfig.date2cron(new Date(System.currentTimeMillis() + time));
        // 我到指定2023-10-19 00-00-00时间来执行一次
        Date birth = new SimpleDateFormat().parse("yyyy-MM-dd HH-mm-ss");
        String birthDayCron = elasticjobDynamicConfig.date2cron(birth);
        elasticjobDynamicConfig.addDynamicTask(jobName, birthDayCron, 1, id, new DynamicTask());
        return new Result(true, StatusCode.OK, "执行成功!");
    }
/****
     * 时间转换成Cron表达式 步骤7
     * "1/5 * * * * ?"; 秒 分 时 日 月 周中的日期 年(省略) SS MM HH dd MM ? yyyy 这个cron eljob也能识别 但是只执行一次
     */
    public static String date2cron(Date date){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(cron);
        String format = simpleDateFormat.format(date);
        System.out.println("format = " + format);
        return format;
    }

环境

参考地址:https://github.com/LuoLiangDSGA/spring-learning/tree/master/boot-elasticjob
动态任务案例主要是讲解程序在运行时,动态添加定时任务,这种场景应用非常广泛。使用elastic-job实现动态添加定时任务的实现有点复杂,我们接下来实际操作一次。

步骤:

1.配置初始化的zookeeper地址
2.配置的定时任务命名空间(不一定会使用)
3.注册初始化数据
4.监听器->任务执行前后监听(可有可无)
5.动态添加定时任务实现
6.自定义任务处理过程-实现SimpleJob

com.github.kuhn-he elastic-job-lite-spring-boot-starter 2.1.5

elaticjob:
zookeeper:
server-lists: ip:3181
namespace: updatetask

你可能感兴趣的:(java)