• elastic-job详解(五):自定义任务参数


    elastic-job详解(三):Job的手动触发功能一文中讲到了如何手动触发一个Job,但是我们手动触发的时候常常需要输入一些参数。举个栗子:我们有个日统计报表,每天凌晨统计一次,统计上一天的数据。但我们发现几天前的某一天的数据有问题,需要重跑统计。这就需要统计程序能执行指定某一天的数据。这个功能就可以使用自定义任务参数来轻松实现。自定义参数,可通过传递该参数为作业调度的业务方法传参,用于实现带参数的作业。例:每次获取的数据量、作业实例从数据库读取的主键、执行某一天的任务等。

    1. 支持自定义参数的代码

    要使用自定义参数,就必须要在你实现的任务中使用这个参数,下面我们来看一下具体实现的代码:

    public class MySimpleJob implements SimpleJob
    {
        Logger logger = LoggerFactory.getLogger("MyShardingJob1");
        
        @Override
        public void execute(ShardingContext shardingContext)
        {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String date;
            String param = shardingContext.getJobParameter();
    
            date = param.isEmpty() ? sdf.format(new Date()) : param;
            doWork(date);
        }
    
        private void doWork(String date)
        {
            logger.info("Doing work.");
        }
    }

    真正和业务处理方法doWork接收一个日期参数,如果自定义参数没有则按照常规使用当前时间来进行统计,如果通过手动触发给定了参数,则使用给定的参数来做任务。自定义参数是根据shardingContext.getJobParameter()来获取。

    2. 触发自定义参数

    代码层面支持之后,我们来看一下怎么触发。首先找到console管理界面,连上正在执行的任务,点击“修改”按钮。

    image

    进入任务修改界面,在自定义参数一栏添加参数,然后点击更新。

    image

    最后,在图1中点击触发按钮。带参数的任务就会被触发。千万不要忘记执行成功之后再次修改回来,避免每次执行都会使用这个自定义参数。

    elastic-job内部是在zookeeper中修改任务config节点中”jobParameter”的数据。

    image

    架构点滴

  • 相关阅读:
    排序算法的稳定性
    字符串处理常用函数
    判断两棵二叉树是否相等
    约瑟夫环
    自加++
    Linux 安装配置 Tomcat
    在 eclipse 中将 web 项目部署到 tomcat 服务器上
    PHP连接MySQL数据库
    logback
    Log4J
  • 原文地址:https://www.cnblogs.com/haoxinyue/p/7493567.html
Copyright © 2020-2023  润新知