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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 接私活/工作必备-SpringBoot+Elastic-Job的快速启动Demo

如果你还没有掌握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>

image.png


第二步,编写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);
    }
}


5da9ca88c3b04a92b67d5771d5ba563e.png


第三步,编写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();
    }
}

image.png


第四步,编写MyJob

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

image.png


第五步,执行启动类


image.png


定时任务开始执行


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

image.png


image.png


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


image.png

image.png


好啦,今天的知识就分享到这里吧,如果你感到有用的话记得点一下收藏哦


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
存储 Java 关系型数据库
0018Java程序设计-springboot智慧环卫养管作业平台1
0018Java程序设计-springboot智慧环卫养管作业平台
94 0
|
SQL Java 定位技术
0018Java程序设计-springboot智慧环卫养管作业平台2
0018Java程序设计-springboot智慧环卫养管作业平台
58 0
|
6月前
|
前端开发 JavaScript Java
计算机Java项目|基于springboot的课程作业管理系统
计算机Java项目|基于springboot的课程作业管理系统
|
7月前
|
SQL Java 关系型数据库
【极光系列】springBoot集成xxl-job调度器
【极光系列】springBoot集成xxl-job调度器
92 2
|
Java API Spring
SpringBoot中“@SpringBootApplication“自动配置原理《第七课》
SpringBoot中“@SpringBootApplication“自动配置原理《第七课》
154 0
|
Cloud Native Java 应用服务中间件
这样做优化,实现 0.059s 启动一个SpringBoot项目!
这样做优化,实现 0.059s 启动一个SpringBoot项目!
|
前端开发 JavaScript Java
基于Springboot实现作业管理系统
基于Springboot实现作业管理系统
342 0
基于Springboot实现作业管理系统
|
Java 数据安全/隐私保护 Spring
18、SpringBoot2.0中项目启动时启动资源(十八)
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。
108 0
|
运维 Java 程序员
SpringBoot运维实用篇 SpringBoot程序的打包与运行
SpringBoot运维实用篇 SpringBoot程序的打包与运行
318 0
SpringBoot运维实用篇 SpringBoot程序的打包与运行
|
Java 关系型数据库 MySQL
【SpringBoot2】运维实用篇-SpringBoot程序的打包与运行
实用篇是在基础篇的根基之上,补全SpringBoot的知识图谱。比如在基础篇中只给大家讲了yaml的语法格式,但是具体写yaml文件的时候还有很多实用开发过程中的坑,这些在实用篇中进行学习。
266 0
【SpringBoot2】运维实用篇-SpringBoot程序的打包与运行