接私活/工作必备-SpringBoot+Elastic-Job的快速启动Demo

本文介绍了如何在SpringBoot项目中集成ElasticJob实现分布式定时任务,包括创建注册中心、配置ElasticJob、编写MyJob类并演示了其在分布式环境下的执行特点。

如果你还没有掌握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是分布式调度框架的特性,这时候我们把其中一个项目给停止了,就会发现另外一个项目就开始执行了:
在这里插入图片描述
在这里插入图片描述
好啦,今天的知识就分享到这里吧,如果你感到有用的话记得点一下收藏哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掉头发的王富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值