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

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

 

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()来获取。ide

 

2. 触发自定义参数spa

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

image

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

image

 

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

 

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

image

 

 

 

 

 

 

架构点滴

相关文章
相关标签/搜索