Springboot 整合xxl job

Springboot 整合xxl job

1.下载

​ Documentation
中文文档

​ 源码下载地址

​ https://github.com/xuxueli/xxl-job

2.调度中心xxl-job-admin
  • idea导入项目,在目标数据库中执行table_xxl_job.sql初始化xxl-job数据库。

    CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;
    use `xxl_job`;
    ................
    
  • 修改xxl-job-admin模块application.properties数据源信息

    ### xxl-job, datasource,链接地址请保持和所创建的调度数据库的地址一致
    spring.datasource.url=jdbc:mysql://116.62.246.132:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=*******
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
  • 如果已经正确进行上述配置,可将项目编译打包部署。

    调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

    默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

    Springboot 整合xxl job

3.在项目中创建自己的执行器

参照xxl-job项目中xxl-job-executor-sample-springboot模块在项目创建执行器。

  • 在项目中创建xxl-job-executor子模块

  • pom.xml文件中添加核心依赖

    <dependency>
         <groupId>com.xuxueli</groupId>
         <artifactId>xxl-job-core</artifactId>
         <version>2.3.0</version>
    </dependency>
    
  • 配置application.properties

    ### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
    xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
    ### 执行器通讯TOKEN [选填]:非空时启用;
    xxl.job.accessToken=
    ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
    xxl.job.executor.appname=xxl-job-executor-sample
    ### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
    xxl.job.executor.address=
    ### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
    xxl.job.executor.ip=
    ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
    xxl.job.executor.port=9999
    ### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
    xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
    ### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
    xxl.job.executor.logretentiondays=30
    
  • 参照xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java,在项目中新增执行器config

     	@Bean
        public XxlJobSpringExecutor xxlJobExecutor() {
            logger.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
            xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
            xxlJobSpringExecutor.setAppname(appname);
            xxlJobSpringExecutor.setAddress(address);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
    
            return xxlJobSpringExecutor;
        }
    
  • 创建TycXxlJob.java,编写jobhandler,springboot在方法上添加@XxlJob注解。

    @Component
    public class TycXxlJob {
    	/**
         * xxl-job test
         * @throws Exception
         */
        @XxlJob("yeyooJobHandler")
        public void yeyooJobHandler() throws Exception {
            XxlJobHelper.log("XXL-JOB, Economic Brain.");
            XxlJobHelper.log("xxl job test");
        }
    }
    
  • 如果已经正确进行上述配置,可将执行器项目编译打包部署执行器。

4.xxl-job新建任务
  • 登录xxl-job调度管理中心,http://ip:port/xxl-job-admin。

  • 点击执行器管理,新增执行器,AppName与配置文件xxl.job.executor.appname保持一致。

  • 点击任务管理,新增任务,执行器选择上一步新增的执行器,运行模式选BEAN,JobHandler填写yeyooJobHandler,对应TycXxlJob.java中的@XxlJob的value。

  • 在任务管理界面点击新增任务“操作”按钮,选择“执行一次”,测试任务调度。

  • 点击调度日志查看结果。

    2021-08-24 15:55:46 [com.xxl.job.core.thread.JobThread#run]-[130]-[Thread-368] 
    ----------- xxl-job job execute start -----------
    ----------- Param:
    2021-08-24 15:55:46 [com.yeyoo.tycIo.jobhandler.TycXxlJob#yeyooJobHandler]-[60]-[Thread-368] XXL-JOB, Economic Brain.
    2021-08-24 15:55:46 [com.yeyoo.tycIo.jobhandler.TycXxlJob#yeyooJobHandler]-[61]-[Thread-368] xxl job test
    2021-08-24 15:55:46 [com.xxl.job.core.thread.JobThread#run]-[176]-[Thread-368] 
    ----------- xxl-job job execute end(finish) -----------
    ----------- Result: handleCode=200, handleMsg = null
    2021-08-24 15:55:46 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread] 
    ----------- xxl-job job callback finish.
    
5.其他项目引用
  • pom.xml文件添加依赖引入xxl-job-executor子模块

     <dependency>
          <groupId>com.xxx.xxx</groupId>
          <artifactId>xxl-job-executor</artifactId>
          <version>1.0-SNAPSHOT</version>
     </dependency>
    
  • application.yml配置文件添加执行器信息

    xxl:
      job:
        admin:
          addresses: http://127.0.0.1:8080/xxl-job-admin  # 调度中心部署地址 。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
    
        accessToken:                                      #执行器通讯TOKEN,非空时启用;
    
        executor:
          appname: yeyoo-xxl-job-executor-sample          #执行器AppName
          address:                                        #执行器注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
          ip:                                             #执行器ip,为空表示自动获取IP。
          port: 9999                                      #执行器端口
          logpath: /data/applogs/xxl-job/jobhandler       #执行器运行日志文件存储磁盘路径
          logretentiondays: 30                            #执行器日志文件保存天数
    
    
  • 创建项目定时任务。

  • 登录xxl-job调度管理中心添加任务,设置cron表达式,启动定时任务。

上一篇:YouTube下载器:MediaHuman YouTube Downloader Mac汉化破解版


下一篇:LDT面试:实验室开发诊断试剂监管模式(Laboratory Developed Test,LDT)