美文网首页Java高开发分布式架构
任务调度平台XXL-JOB使用

任务调度平台XXL-JOB使用

作者: java高并发 | 来源:发表于2019-05-21 17:39 被阅读0次

    分布式任务调度平台xxl-job是一个开源框架。

    1. 配置部署调度中心。
      首先在gitHub上下载源代码,是maven项目。执行tables_xxl_job.sql建表语句。文档里要求mysql5.6+。在mysql5.5也可以执行。需要先建数据库,名字任意。在idea里面启动项目,用的tomcat是8.5.24。成功启动项目。调度中心的配置内容参考文档。注意里面的数据库名称就是自己新建的数据库名了。

    2. 配置部署 执行器项目
      执行器项目通常指 目前开发的项目。在项目中整合xxl-job任务调度框架,只需要引入一个maven包、配置一下参数和实现接口就可以。非常方便。这里记录一下和springboot的集成。引入

    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>1.8.2</version>
    </dependency>
    

    2.1 application.yml的配置文件
    yml配置文件加上配置。

    xxl:
      job:
        admin:
          addresses: "@xxl.job.admin.addresses@"
        executor:
          appname: "@xxl.job.executor.appname@"
          ip: "@xxl.job.executor.ip@"
          port: "@xxl.job.executor.port@"
          logpath: "@xxl.job.executor.logpath@"
        accessToken: "@xxl.job.accessToken@"
    

    其中的”@xxl.job.executor.appname@”等配置是在config_local.properties文件里,参数具体意思参考文档。通常yml里是写具体的参数值,这里用这种方式是如何实现和config_local.properties文件对应的,是通过maven的prefile配置吗?暂时不懂,还需去了解。

    #xxl-job 调度中心工程的地址
    xxl.job.admin.addresses=http://localhost:8999/xxl-job-admin
    
    ### xxl-job executor address
    xxl.job.executor.appname=xxl-job-ots-server
    xxl.job.executor.ip=
    xxl.job.executor.port=9946
    
    ### xxl-job log path
    xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/
    
    ### xxl-job, access token
    xxl.job.accessToken=
    

    编写XxlJobConfig类

    package com.lancy.task;
    
    import com.xxl.job.core.executor.XxlJobExecutor;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * xxl-job config
     * @author xuxueli 2017-04-28
     */
    @Configuration
    @ComponentScan(basePackages = "com.lancy.task")
    //basePackages指向实现了接口IJobHandle的类所在包
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
        @Value("${xxl.job.admin.addresses}")
        private String addresses;
    
        @Value("${xxl.job.executor.appname}")
        private String appname;
    
        @Value("${xxl.job.executor.ip}")
        private String ip;
    
        @Value("${xxl.job.executor.port}")
        private int port;
    
        @Value("${xxl.job.executor.logpath}")
        private String logpath;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Bean(initMethod = "start", destroyMethod = "destroy")
        public XxlJobExecutor xxlJobExecutor() {
            logger.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
            xxlJobExecutor.setIp(ip);
            xxlJobExecutor.setPort(port);
            xxlJobExecutor.setAppName(appname);
            xxlJobExecutor.setAdminAddresses(addresses);
            xxlJobExecutor.setLogPath(logpath);
            xxlJobExecutor.setAccessToken(accessToken);
            return xxlJobExecutor;
        }
    
    }
    

    写一个任务类,继承IJobHandler。这个类需要在上面的XxlJobConfig里配置的包下?

    package com.lancy.task;
    
    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.IJobHandler;
    import com.xxl.job.core.handler.annotation.JobHander;
    import org.springframework.stereotype.Component;
    
    @Component
    @JobHander(value="helloWorld")
    //@Comonent 把类交给spring容器管理,必须
    //@JobHander 唯一标识一个任务。调度中心会查找这个唯一的名称来启动执行此类的execute方法。
    public class HelloWorld extends IJobHandler {
        @Override
        public ReturnT<String> execute(String... strings) throws Exception {
            System.out.println("你好呀");
            return ReturnT.SUCCESS;
        }
    }
    

    2.2 application.properties的配置文件
    application.properties配置文件加上配置。

    # xxl-job
    xxl.job.admin.addresses=http://localhost:8999/xxl-job-admin
    
    ### xxl-job executor address
    xxl.job.executor.appname=xxl-job-executor-sample
    xxl.job.executor.ip=
    xxl.job.executor.port=9998
    
    ### xxl-job log path
    xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/
    
    ### xxl-job, access token
    xxl.job.accessToken=
    

    然后编写XxlJobConfig类、写一个任务类,继承IJobHandler,同上。到这里就把springboot的配置讲完了。源码里还有和spring整合的demo,也很简单,可以参考。

    1. 调度中心配置
      添加执行器

    任务管理添加任务

    到此,整合xxl-job就完成了,非常方便实用。
    欢迎工作一到五年的Java工程师朋友们加入Java高并发QQ群:219571750,群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    相关文章

      网友评论

        本文标题:任务调度平台XXL-JOB使用

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