本文主要目的:简单梳理了基于Spring ElasticJob的启动流程,从下文开始,将重点剖析ElasticJob的核心实现细节,例如选主、分片、失效转移机制等等。
1<job:simple id="areaSyncJob" class="full class path"
2 registry-center-ref="regCenter" cron="${elastic.exp.job.gisAMapArea.cron}"
3 disabled="${elastic.exp.job.gisAMapArea.disabled}"
4 sharding-total-count="${elastic.exp.job.areaSyncJob.shardingtotalcount}"
5 sharding-item-parameters="${elastic.exp.job.areaSyncJob.shardingitemparameters}"
6 overwrite="true" job-parameter="1" monitor-execution="true"
7 description="高德行政区域数据同步" event-trace-rdb-data-source="dataSource" />
从上篇中我们知道该标签的解析类为Si-mpleJobBeanDefinitionParser,最终会构建SpringJobScheduler实例,并在初始化实例后调用init方法,开始Job任务的生命周期(启动、运行、调度)。
上面第7步,ElasticJob注册启动信息,其源码如下: SchedulerFacade#registerStartUpInfo
1/**
2 * 注册作业启动信息.
3 *
4 * @param enabled 作业是否启用
5 */
6 public void registerStartUpInfo(final boolean enabled) {
7 listenerManager.startAllListeners();
8 leaderService.electLeader();
9 serverService.persistOnline(enabled);
10 instanceService.persistOnline();
11 shardingService.setReshardingFlag();
12 monitorService.listen();
13 if (!reconcileService.isRunning()) {
14 reconcileService.startAsync();
15 }
16 }
本文就到此为止,从下篇文章开始将重点介绍分布式调度任务所需要解决的问题的实现原理,例如如何选主、分片、失效转移等。