文章目录
如果你还没有掌握elasticjob的maven版本的快速入门,欢迎查看我上一篇文章,这次我们来讲springboot集成elasticJob。使得大家能够快速入门elasticjob,快速开始
仓库地址:
https://gitee.com/WangFuGui-Ma/elastic-job-quickstart
第一步,创建一个springboot项目并且导入jar包:
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>

第二步,编写RegistryCenterConfig注册中心类
@Configuration
public class RegistryCenterConfig {
@Value("${elasticJob.zookeeperUrl}")
private String zookeeperUrl;
@Value("${elasticJob.zookeeperNameSpace}")
private String zookeeperNameSpace;
@Bean(initMethod = "init")
public CoordinatorRegistryCenter createRegistryCenter() {
//注册中心
ZookeeperConfiguration zkConfig = new ZookeeperConfiguration(zookeeperUrl, zookeeperNameSpace);
zkConfig.setSessionTimeoutMilliseconds(100);
return new ZookeeperRegistryCenter(zkConfig);
}
}

第三步,编写ElasticJobConfig类
@Configuration
public class ElasticJobConfig {
@Autowired
private CoordinatorRegistryCenter registryCenterConfig;
//加入bean注解就可以拿到MyJob
@Bean(initMethod = "init")
public SpringJobScheduler initJobConfiguration(MyJob myJob) {
return new SpringJobScheduler(myJob, registryCenterConfig, createJobConfiguration(myJob.getClass(),"0/3 * * * * ?",1,null));
}
/**
*
* @param clazz 任务的字节码
* @param cron 表达式
* @param shrdingCount 分片个数
* @param shardingParamter 分片参数
* @return
*/
private LiteJobConfiguration createJobConfiguration(Class<? extends ElasticJob> clazz, String cron, int shrdingCount, String shardingParamter) {
JobCoreConfiguration.Builder builder = JobCoreConfiguration.newBuilder(clazz.getSimpleName(), cron, shrdingCount);
if (StringUtils.isEmpty(shardingParamter)) {
builder.shardingItemParameters(shardingParamter);
}
//创建作业配置
SimpleJobConfiguration simpleJobConfiguration = new SimpleJobConfiguration(builder.build(), clazz.getCanonicalName());
//覆盖zookeeper
return LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite(true).build();
}
}

第四步,编写MyJob类
@Component
public class MyJob implements SimpleJob {
public void execute(ShardingContext shardingContext) {
System.out.println("定时任务开始执行了"+ new Date());
}
}

第五步,执行启动类

定时任务开始执行
第六步,我们启动两个类,就会发现只有一个定时任务执行成功了:


这是因为elasticjob是分布式调度框架的特性,这时候我们把其中一个项目给停止了,就会发现另外一个项目就开始执行了:


好啦,今天的知识就分享到这里吧,如果你感到有用的话记得点一下收藏哦
本文介绍了如何在SpringBoot项目中集成ElasticJob实现分布式定时任务,包括创建注册中心、配置ElasticJob、编写MyJob类并演示了其在分布式环境下的执行特点。
809

被折叠的 条评论
为什么被折叠?



