当启动一个定时任务时,必然需要众多的配置(例如:触发时间、业务运行逻辑,具体根据项目业务场景进行抽象,提供共用配置项),然后调度器的构造函数中必然要传入这个配置对象,调度器才能知道具体运行什么业务,以怎样的方式运行,接下来简述Elastic-Job-Lite作业配置。

1,本文主要讲述Elastic-Job-Lite作业配置

涉及主要类的类图如下图所示:

elastic-lite-job配置信息

1,JobRootConfiguration配置接口

/**

 * 作业配置根接口.

 */

public  interface  JobRootConfiguration {   

   /**

     * 获取作业类型配置.

     * @return作业类型配置

     */

   JobTypeConfiguration  getTypeConfig();

}

此接口提供获取JobTypeConfiguration对象

JobTypeConfiguration抽象成为一个独立接口原因,ElasticJob有三种不同作业类型:simpledataflowscript不同实现类型,所有被单独抽象出来

2JobTypeConfiguration作业类型配置接口

/**

 * 作业类型配置.

 */

public  interface  JobTypeConfiguration {   

   /**

     * 获取作业类型.     *

     * @return作业类型

     */

   JobType getJobType();   

   /**

     * 获取作业实现类名称.     *

     * @return作业实现类名称

     */

   String getJobClass();   

   /**

     * 获取作业核心配置.     *

     * @return作业核心配置

     */

   JobCoreConfiguration getCoreConfig();

}

getJobType()获取作业类型,JobType枚举类,目前定义3种类型SIMPLEDATAFLOWSCRIPT

getJobClass()获取作业实现类名称,作业业务逻辑类全限定名路径,其中ScriptJobConfiguration获取的是io.elasticjob.lite.api.script. ScriptJob全限定名路径

getCoreConfig()获取作业核心配置信息,该配置抽象成独立的JobCoreConfiguration类,是因为三种不同作业类型共要的公共属性

3, JobTypeConfiguration接口三种作业类型实现类

配置实现

作业类型

 说明

SimpleJobConfiguration

simple

简单作业

ScriptJobConfiguration

script

脚本作业,例如:shell

DataflowJobConfiguration

dataflow

数据流作业

 

4,JobCoreConfiguration作业核心配置

/**

 * 作业核心配置.

 */

public  final  class  JobCoreConfiguration{

//作业名称

   private  final  String  jobName;

    //cron表达式,用于控制作业触发时间

   private  final  String  cron;

    //作业分片总数

   private  final  int  shardingTotalCount;

    //分片***和参数用等号分隔,多个键值对用逗号分隔

   //分片***从0开始,不可大于或等于作业分片总数

   private  final  String   shardingItemParameters;

    //作业自定义参数

//作业自定义参数,可通过传递该参数为作业调度的业务方法传参,用于实现带参数的作业

   private  final  String  jobParameter;

//是否开启任务执行失效转移,开启表示如果作业在一次任务执行中途宕机,

    //允许将该次未完成的任务在另一作业节点上补偿执行

   private  final  boolean  failover;

    //是否开启错过任务重新执行

   private  final  boolean  misfire;

    //作业描述信息

   private  final  String  description;

   //配置jobProperties定义的枚举控制Elastic-Job的实现细节

    //JOB_EXCEPTION_HANDLER用于扩展异常处理类

   //EXECUTOR_SERVICE_HANDLER用于扩展作业处理线程池类

   private  final  JobProperties  jobProperties;

}

以上是JobCoreConfiguration类定义了作业核心配置属性,他定义一个ElasticJob所需要核心配置。

调度器启动时,根据配置信息进行启动

关键属性

  jobName:作业名称

  cron:cron表达式,用于控制作业触发时间

  shardingTotalCount:作业分片总数

  shardingItemParameters:分片***和参数

5,LiteJobConfiguration Lite作业配置

/**

 * Lite作业配置.

 */

public  final  class  LiteJobConfiguration  implements  JobRootConfiguration {

//JobTypeConfiguration接口被独立成一个接口的原因是,ElasticJob有三种不同的作业

//类型,simplescriptdataflow,他们的实现方式有差异,所以需要被独立出来

   private  final  JobTypeConfiguration   typeConfig;

    //监控作业运行时状态,默认值true

   private  final  boolean  monitorExecution;

    //最大允许的本机与注册中心的时间误差秒数

   //如果时间误差超过配置秒数则作业启动时将抛异常

    //配置为-1表示不校验时间误差

   private   final  int  maxTimeDiffSeconds;

    //作业监控端口

   //建议配置作业监控端口, 方便开发者dump作业信息

    //使用方法: echo “dump” | nc 127.0.0.1 9888

   private  final  int  monitorPort;

   //作业分片策略实现类全路径

   //默认使用平均分配策略

   private  final  String  jobShardingStrategyClass;

//修复作业服务器不一致状态服务调度间隔时间,配置为小于1的任意值表示不执行修复

    //单位:分钟

   private  final  int  reconcileIntervalMinutes;

   //设置作业是否启动时禁止.

   //可用于部署作业时, 先在启动时禁止, 部署结束后统一启动

    //默认值:false

   private  final  boolean  disabled;

   //本地配置是否可覆盖注册中心配置

   //本地配置是否可覆盖注册中心配置

   //默认值:false

   private  final  boolean  overwrite;

}

LiftJobConfigurationElasticJob具体配置实现类

每创建一个ElasticJob作业,必须创建一个LiftJobConfiguration对象,每个定时任务对应一个LiftJobConfiguration对象。

 

相关文章: