【ElasticJob源码解析】配置

当启动一个定时任务的时候,必然是需要众多的配置,然后调度器的构造函数中必然要传入这个配置对象,这样调度器才能知道具体要跑什么任务,以怎样的方式跑,那接下来,就来看看ElasticJob的配置接口的设计;

1,顶层配置接口-JobRootConfiguration

public interface JobRootConfiguration {
    JobTypeConfiguration getTypeConfig();
}
  • 这个接口异常异常简单,只是为了获取JobTypeConfiguration对象;
  • JobTypeConfiguration接口被独立成一个接口的原因是,ElasticJob有三种不同的作业类型,simple,script,dataflow,他们的实现方式有差异,所以需要被独立出来;

2,作业类型配置接口-JobTypeConfiguration

public interface JobTypeConfiguration {
    JobType getJobType();
    String getJobClass();
    JobCoreConfiguration getCoreConfig();
}
  • 作业类型配置接口,也只有三个方法,getJobType是为了获取作业类型,就是上面提到的三种类型,他们被定义成了枚举;
  • getJobClass是为了获取作业实现类,需要的是类的全限定名,他是真正的作业逻辑;
  • 最后getCoreConfig获取的是核心配置类,该配置类又被抽成一个独立的接口,是因为对三种作业类型而言,他们是配置类的公共部分,可以减少代码重复;

3,作业核心配置接口-JobCoreConfiguration

private final String jobName;
private final String cron;
private final int shardingTotalCount;
private final String shardingItemParameters;
private final String jobParameter;
private final boolean failover;
private final boolean misfire;
private final String description;
private final JobProperties jobProperties;
  • 上面的字段是核心配置接口中包含的属性,他定义了一个ElasticJob所需要的核心配置;
  • 等调度器启动的时候,会根据以上三个接口中所定义的配置内容进行启动;
  • 在这些配置中有一些是必有的配置:
    • jobName:该作业的名称;
    • cron:作业调度的时机;
    • shardingTotalCount:总分片数;
    • shardingItemParameters:分片序号和个性化参数对照,形如:0=a,1=b,2=c

4,具体实现类-LiteJobConfiguration

这是ElasticJobLite对配置接口JobRootConfiguration的实现,并向其中增加了部分配置项;

private final JobTypeConfiguration typeConfig;
private final boolean monitorExecution;
private final int maxTimeDiffSeconds;
private final int monitorPort;
private final String jobShardingStrategyClass;
private final int reconcileIntervalMinutes;
private final boolean disabled;
private final boolean overwrite;
  • 当启动一个ElasticJobLite的作业,就需要一个LiteJobConfiguration对象,需要注意的是,每个定时任务对应一个LiteJobConfiguration对象,上面所说的配置,都是针对一个定时任务,或者说一个作业而言的;
  • 调度器启动(也就是JobScheduler类的init方法)需要三个必要条件,注册中心,配置对象,事件总线,完成这些就可以启动一个作业;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,554评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,407评论 6 13
  • 1、爸爸给讲绘本《小熊不刷牙》,彤彤给爸爸讲《爷爷一定有办法》。 2、和爸爸一起玩英语字母互动游戏。
    简乔儿阅读 98评论 0 0
  • 我们是不是在浪费?是不是在浪费时间,是不是在浪费精力,是不是在浪费感情。 谢谢阅读。非常感谢你,感谢你看着我成长。
    我心我愿秀阅读 103评论 0 1
  • 今天是正月初五,窗外正是爆竹声响,透过夜色传递着年的气息.无缘由的,就仿佛一只手悄然拂动了心底最敏感的那一部分,悄...
    鱼翔浅底_db5c阅读 154评论 0 0

友情链接更多精彩内容