第一步,建立一個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是分布式排程架構的特性,這時候我們把其中一個項目給停止了,就會發現另外一個項目就開始執行了:
好啦,今天的知識就分享到這裡吧,如果你感到有用的話記得點一下收藏哦
原文連結:https://juejin.cn/post/7227840997984075831