惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
Last Week in AI
Last Week in AI
博客园 - 聂微东
Jina AI
Jina AI
月光博客
月光博客
爱范儿
爱范儿
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
T
Tailwind CSS Blog
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
有赞技术团队
有赞技术团队
罗磊的独立博客
小众软件
小众软件
雷峰网
雷峰网
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog

博客园 - nick hao

RocketMQ的延迟消息 Hystrix入门与分析(二):依赖隔离之线程池隔离 Hystrix入门与分析(一):初识Hystrix 自定义Flume Sink:ElasticSearch Sink elastic-job详解(四):失效转移 elastic-job详解(三):Job的手动触发功能 elastic-job详解(二):作业的调度 elastic-job详解(一):数据分片 定时任务的分布式调度 HBase多条件及分页查询的一些方法 谈谈高并发系统的限流 Phoenix系列:原子的Upsert Phoenix系列:二级索引(2) Phoenix系列:二级索引(1) 延迟任务的实现总结 使用RabbitMQ实现延迟任务 使用Curator操作ZooKeeper ElasticSearch5.X的冷热数据架构 剖析Elasticsearch集群系列之三:近实时搜索、深层分页问题和搜索相关性权衡之道
elastic-job详解(五):自定义任务参数
nick hao · 2017-09-08 · via 博客园 - nick hao

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

架构点滴