JobScheduler这个类是EJ中比较核心的一个类,我们现在开始解析这个类。
一、构造器
首先我们看一下JobScheduler的几个构造器。
private JobScheduler(final CoordinatorRegistryCenter regCenter, final LiteJobConfiguration liteJobConfig, final JobEventBus jobEventBus, final ElasticJobListener... elasticJobListeners) {
JobRegistry.getInstance().addJobInstance(liteJobConfig.getJobName(), new JobInstance());
this.liteJobConfig = liteJobConfig;
this.regCenter = regCenter;
List<ElasticJobListener> elasticJobListenerList = Arrays.asList(elasticJobListeners);
setGuaranteeServiceForElasticJobListeners(regCenter, elasticJobListenerList);
schedulerFacade = new SchedulerFacade(regCenter, liteJobConfig.getJobName(), elasticJobListenerList);
jobFacade = new LiteJobFacade(regCenter, liteJobConfig.getJobName(), Arrays.asList(elasticJobListeners), jobEventBus);
}
这个构造器比较清晰,第一个参数regCenter表示的是注册中心,这里我们用的是zk作为我们的注册中心,所以这块的配置我们一般从xml配置文件中读取即可。我们按照官方文档配置即可。
<!--配置作业注册中心 -->
<reg:zookeeper id="regCenter" server-lists="ip1:2181,ip2:2181"
namespace="your-job-name" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000"
max-retries="3"/>