加入maven依赖包
<!-- 引入elastic-job-lite核心模块 -->
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>2.1.5</version>
</dependency>
<!-- 使用springframework自定义命名空间时引入 -->
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>
1.配置properties
zookeeper.serverList=xxx.xxx.xxx.xxx:8060,xxx.xxx.xxx.xxx:8060,xxx.xxx.xxx.xxx:8060
zookeeper.namespace.elasticJob=elastic-job-lite-springboot
elasticJob.cron.myjob=0/5 * * * * ?
elasticJob.shardingTotalCount.myjob=2
elasticJob.shardingItemParameters.myjob=0=p0,1=p1
2.ZookeeperConfig
@Configuration
@ConditionalOnExpression("'${regCenter.serverListt}'.length() > 0")
public class ZookeeperConfig {
@Value("${zookeeper.serverList}")
private String serverList;
@Value("${zookeeper.namespace.elasticJob}")
private String namespace;
@Bean
public ZookeeperConfiguration zkConfig() {
return new ZookeeperConfiguration(serverList, namespace);
}
@Bean(initMethod = "init", destroyMethod = "close")
public ZookeeperRegistryCenter regCenter(ZookeeperConfiguration config) {
return new ZookeeperRegistryCenter(config);
}
}
3.新建示例JOB
@Component
public class MyElasticJob implements SimpleJob {
@Override
public void execute(ShardingContext context) {
System.out.println(String.format("------Thread ID: %s, 任务总片数: %s, "
+ "当前分片项: %s.当前参数: %s,"
+ "当前任务名称: %s.当前任务参数: %s",
Thread.currentThread().getId(),
context.getShardingTotalCount(),
context.getShardingItem(),
context.getShardingParameter(),
context.getJobName(),
context.getJobParameter()));
switch (context.getShardingItem()) {
case 0:
System.out.println("do something by sharding item 0");
break;
case 1:
System.out.println("do something by sharding item 1");
break;
case 2:
System.out.println("do something by sharding item 2");
break;
default:
break;
}
}
}
4.ElasticJobConfig
@Configuration
public class ElasticJobConfig {
@Autowired
private ZookeeperRegistryCenter regCenter;
@Autowired
private MyElasticJob myElasticJob;
//定时任务的cron表达式
@Value("${elasticJob.cron.myjob}")
private String cron;
//为任务的分片数量(即同时同时开几个定时任务)
@Value("${elasticJob.shardingTotalCount.myjob}")
private int shardingTotalCount;
//为任务分片携带的参数
@Value("${elasticJob.shardingItemParameters.myjob}")
private String shardingItemParameters;
public ElasticJobConfig() {
}
@Bean(initMethod = "init")
public JobScheduler simpleJobScheduler() {
LiteJobConfiguration liteJobConfiguration
= getLiteJobConfiguration(myElasticJob.getClass(), cron, shardingTotalCount, shardingItemParameters);
JobScheduler jobScheduler
= new SpringJobScheduler(myElasticJob, regCenter, liteJobConfiguration);
return jobScheduler;
}
/**
*@Description 任务配置类
*/
private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass,
final String cron,
final int shardingTotalCount,
final String shardingItemParameters){
JobCoreConfiguration jobCoreConfiguration = JobCoreConfiguration.newBuilder(
jobClass.getName(), cron, shardingTotalCount)
.shardingItemParameters(shardingItemParameters)
.build();
SimpleJobConfiguration simpleJobConfiguration = new SimpleJobConfiguration(jobCoreConfiguration,jobClass.getCanonicalName());
return LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite(true).build();
}
}
5.启动springboot,JOB即可执行