【源码分析】Elastic-Job源码分析之AbstractElasticJobExecutor分析

本文深入分析Elastic-Job的执行器,重点关注AbstractElasticJobExecutor。在execute()方法中,首先检查运行环境,获取分片上下文,判断是否开启失效转移。在process()方法中,执行具体任务,并在SimpleExecutor中,子类只需实现process()。整个执行流程包括任务事件发布、执行前准备和执行后处理。
摘要由CSDN通过智能技术生成

还记得我们在JobScheduler中,在创建任务详情时,会调用一个建造器JobBuilder来创建一个Job,类型是LiteJob。

LiteJob.java

/**
 * Lite调度作业.
 *
 * @author zhangliang
 */
public final class LiteJob implements Job {
   

    @Setter
    private ElasticJob elasticJob;

    @Setter
    private JobFacade jobFacade;

    @Override
    public void execute(final JobExecutionContext context) throws JobExecutionException {
        JobExecutorFactory.getJobExecutor(elasticJob, jobFacade).execute();
    }
}

进入到LiteJob,我们可以看到,它继承自quartz中的Job,同时新增了两个属性elasticJob和jobFacade,这个我们后续分析。我们关注的是execute方法。首先通过工厂模式,确定了执行器,我们可以看到有三种执行器,分别是ScriptJobExecutor、SimpleJobExecutor和DataflowJobExecutor,分别对应了三种job类型。由于SimpleJob覆盖了80%的使用场景,我们主要来分析一下SimpleJobExecutor。

SimpleExecutor.java

public final class SimpleJobExecutor extends AbstractElasticJobExecutor {
   

    private final SimpleJob simpleJob;

    public SimpleJobExecutor(final SimpleJob simpleJob, final JobFacade jobFacade) {
        super(jobFacade);
        this.simpleJob = simpleJob;
    }

    @Override
    protected void process(final ShardingContext shardingContext) {
        simpleJob.execute(shardingContext);
    }
}

这个执行器继承自AbstractElasticJobExecutor,然后里面实现的内容也很简单,子类需要实现父类的方法process,其他的方法在父类中执行。我们重点看一下AbstractElasticJobExecutor这个基础执行器。

AbstractElasticJobExecutor.java</

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值