天天看點

接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

作者:老馬帶你學java

第一步,建立一個springboot項目并且導入jar包:

<dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-spring</artifactId>
            <version>2.1.5</version>
        </dependency>
複制代碼           
接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

第二步,編寫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);
    }


}

複制代碼           
接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

第三步,編寫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();
    }
}
複制代碼           
接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

第四步,編寫MyJob類

@Component
public class MyJob implements SimpleJob {
    public void execute(ShardingContext shardingContext) {
        System.out.println("定時任務開始執行了"+ new Date());
    }
}

複制代碼           
接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

第五步,執行啟動類

接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

定時任務開始執行

第六步,我們啟動兩個類,就會發現隻有一個定時任務執行成功了:

接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo
接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

這是因為elasticjob是分布式排程架構的特性,這時候我們把其中一個項目給停止了,就會發現另外一個項目就開始執行了:

接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo
接私活/工作必備-SpringBoot+Elastic-Job的快速啟動Demo

好啦,今天的知識就分享到這裡吧,如果你感到有用的話記得點一下收藏哦

原文連結:https://juejin.cn/post/7227840997984075831