需求 - 定时任务需要通过页面来添加 环境 - SpringBoot、ElasticJob 开发 - 引入ElasticJob、zookeeper pom
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
</dependency>
配置ElasticJobConfig(其中spring.elasticjob.serverList、spring.elasticjob.namespace为配置项)
@Configuration
@ConditionalOnExpression("'${spring.elasticjob.serverList}'.length() > 0")
public class ElasticJobConfig {
@Autowired
private DataSource dataSource;
@Bean(initMethod = "init")
public ZookeeperRegistryCenter regCenter(@Value("${spring.elasticjob.serverList}") final String serverList, @Value("${spring.elasticjob.namespace}") final String namespace) {
return new ZookeeperRegistryCenter(new ZookeeperConfiguration(serverList, namespace));
}
@Bean
public JobEventConfiguration jobEventConfiguration() {
return new JobEventRdbConfiguration(dataSource);
}
}
添加job片段
JobCoreConfiguration coreConfig = JobCoreConfiguration.newBuilder(taskNo, DateHelper.getCron(taskVO.getExecuteTime()), 1).build();
SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(coreConfig, DynamicAddJob.class.getCanonicalName());
JobScheduler jobScheduler = new JobScheduler(regCenter, LiteJobConfiguration.newBuilder(simpleJobConfig).build());
jobScheduler.init();
DynamicAddJob代码片段
public class DynamicAddJob implements SimpleJob {
@Override
public void execute(ShardingContext shardingContext) {
String jobName = shardingContext.getJobName();//获取Job名称
......
}
}