美文网首页SpringCloud
手把手带你构建一个简单的springCloud分布式任务调度组件

手把手带你构建一个简单的springCloud分布式任务调度组件

作者: 原来Yhy | 来源:发表于2019-10-04 19:06 被阅读0次

    当前项目是基于SpringCloud,服务注册中心(eurake,nacos...)进行任务调度的思路。

    目前完成的功能有:任务自动注册,任务统一管理,集中调度,支持多种路由规则(可拓展),任务调度日志,轻量级无需依赖quartz。

    分布式任务调度和单体应用的任务调度的区别在于,通过将任务集中统一管理,无需每一个微服务都维护自己的任务。下面通过一个简单的示例来看看分布式任务调度的构建流程。

    主要分为两大部分任务管理组件,和任务执行组件(都可以通过水平拓展来增加服务的容错性稳定性)

    示例代码:https://github.com/awyFamily/nc-job.git

    一、分布式任务管理中心部署:

    1.新建数据库ncjob,执行初始化文件(resource/init/init.sql)

    2.如果是基于eurake,则在pom文件中引用eurake client依赖,yml加入eurake配置【nacos同理】

    3.更改yml文件中数据库配置信息

    4.运行启动类

    5.添加测试任务(需要先启动example项目)

    6.立即执行测试

    执行测试类,或请求url:  localhost:9999/jobInfo/running/1

    响应:被立即执行了

    7.日志输出

    二、执行器任务快速开始:

    1.引入依赖包

    <dependency>    

        <groupId>com.awyFamily</groupId>    

        <artifactId>nc-job-core</artifactId>    

        <version>${nc.job.version}</version>

    </dependency> 

    2.yml文件加入配置

    #任务配置

    nc:job:  provider:   

                    #服务实例名(当前执行器)    

                    jobServerId: nc-job-example   

                    #任务包路径    

                    taskPackagePath: com.yhw.nc.job.example.handler

    3.增加配置类(主要作用扫描包)

    @EnableFeignClients(JobCommonConstant.ADMIN_FEIGN_REMOTE_PATH)

    @ComponentScan(JobCommonConstant.JOB_SCAN_PACKAGE_PATH)

    @Configurationpublic class NcJobConfig {

    }

    4.开始第一个任务,在taskPackagePath包下新建任务,注意getName方法的值必须唯一,否则会导致重名任务找不到的情况

    @Slf4j

    @Component

    public class TestNcTask extends AbstractNcTask {    

            @Override    

            protected void run(Integer jobId, String parameter) {        

                log.info("开始运行了:".concat(LocalDateTime.now().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))));   

             }    

        @Override    protected String getName() {        

                return "测试任务";   

         }

    5.运行启动类

    启动后会自动注册任务的数据库:

    如图所示:

    三、其他信息

    基于nacos实现:https://github.com/sunboy1/nacos_cloud.git

    springboot单机版,基于quartz :https://github.com/sunboy1/quartz.git

    想要了解分布式调度更多的信息请关注:https://github.com/xuxueli/xxl-job

    相关文章

      网友评论

        本文标题:手把手带你构建一个简单的springCloud分布式任务调度组件

        本文链接:https://www.haomeiwen.com/subject/utyspctx.html