【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方法)需要三个必要条件,注册中心,配置对象,事件总线,完成这些就可以启动一个作业;

你可能感兴趣的:(【ElasticJob源码解析】配置)