Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用

        XXL-JOB 是一个开源的、轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。项目github下载地址 点击查看 ,项目使用文档点击查看   

 首先我们去github 或者 码云 上下载最新的  xxl-job的代码   不同版本的具体继承配置不太相同

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第1张图片

调度数据库初始化SQL脚本,脚本位置 /xxl-job/doc/db/tables_xxl_job.sql ,导入到我们的数据库中,会自行创建一个xxl-job的库,这个可以自行更改,导入你本地的数据库也行,然后将项目导入本地开发工具中,更改你数据库的地址,用户名,密码

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第2张图片

点击运行xxl-job-admin 启动项目,项目登录默认的用户名密码 admin/123456

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第3张图片

到此我们完成了第一步,接下来我们在自己的springboot上整合一下,首先在项目的pom文件中加入依赖

 
	com.xuxueli
	xxl-job-core
	2.1.0

然后在项目的 application.properties 配置文件中加入

server.port=8088

### xxl-job 的访问地址
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### xxl-job 的appname ip不填代表本机 
xxl.job.executor.appname=plat-job
xxl.job.executor.ip=
xxl.job.executor.port=8087

### xxl-job, access token
xxl.job.accessToken=

### xxl-job log path
xxl.job.executor.logpath=E:/applogs/
### xxl-job log retention days
xxl.job.executor.logretentiondays=-1

配置 XxlJobConfig 

package com.example.mycloud.config;


import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
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;

@Configuration
//指定任务Handler所在包路径
@ComponentScan(basePackages = "com.example.mycloud.job")
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @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.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;


    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info("====xxl-job config init====");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppName(appName);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }

}


写个测试任务

package com.ruoyi.project.job;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.stereotype.Component;

@JobHandler(value="TestHandler")
@Component
public class TestHandler extends IJobHandler {

    @Override
    public ReturnT execute(String param) throws Exception {
        System.out.println("测试job的输入参数:"+param);
        return SUCCESS;
    }
}

然后启动你的springboot项目,然后在 xxl-job admin 中配置相应的信息,首先配置执行器,就是你配置文件的 appname, 名称 排序随便取,注册方式自动就行,这样xxl-job 就可以根据你appname找到相应的项目去执行定时任务

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第4张图片

添加完执行管理器之后,我们添加刚测试的定时job ,执行器选择你刚刚新增的那个名字,路由策略,如果你同一个项目部署多台,可根据下拉选项选择不同的路由策略

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第5张图片

点击保存之后界面如图,要在你的执行器下找,不然会找不到,点击执行是立即执行一次,启动是开始按照 cron的规则去运行

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第6张图片

启动你的springboot项目,点击执行,看控制台输出,点击上图的日志,可以查看定时任务是否运行成功

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第7张图片

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第8张图片

这里我们就完成了springboot项目整合 xxl-job  了,主要注意几点,一,执行数据库脚本,启动你的 xxl-job 项目。二 ,在你的springboot项目中添加依赖,配置 xxl-job-admin 的地址。 三,在xxl-job=admin 中配置你的执行器,这里注意,同一个名称的执行器端口不能相同,如果你的项目部署多台,最好直接使用项目的端口号。

springboot的具体继承配置在项目中有代码示例的,不用版本配置 使用不太相同,以官方最新版本 demo 为主

Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用_第9张图片

另外写一下个人想法,定时任务工程是单独的,里面不要掺杂其他的业务代码,单独起一个定时任务的项目,如果我们需要操作不同的数据库,这里之前也写过 springboot 多数据源配置,点击即可参考 ,

你可能感兴趣的:(springboot)