如果你还没有掌握elasticjob的maven版本的快速入门,欢迎查看我上一篇文章,这次我们来讲springboot集成elasticJob。使得大家能够快速入门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是分布式调度框架的特性,这时候我们把其中一个项目给停止了,就会发现另外一个项目就开始执行了:
好啦,今天的知识就分享到这里吧,如果你感到有用的话记得点一下收藏哦