Springboot 项目集成 xxl-job

本文详细介绍了如何在Springboot项目中集成xxl-job,包括添加pom依赖、配置XxlJobConfig、创建Job处理类以及在xxl-job-admin中管理任务执行。

1、前言

Springboot 集成 xxl-job 的前提是,xxl-job服务端已经部署完成。
使用 docker 安装 xxl-job 可以参考:docker安装xxl-job

2、引入pom依赖

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

3、新建配置类XxlJobConfig

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Configuration
public class XxlJobConfig {

    @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
    public XxlJobSpringExecutor xxlJobExecutor() {
        log.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;
    }
}

4、登录xxl-job-admin,新建执行器

在这里插入图片描述

4、在项目配置文件中,加入执行器配置

xxl:
  job:
  	# accessToken需要和服务端保持一致,服务端如果为空,则这里也配置为空
    accessToken: default_token
    executor:
      # 执行器名称,和服务端保持一致
      appname: java-dev
      # ip为空默认localhost
      ip:
      # 任务log保存路径和保存天数
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 15
      port: 9998
    # xxl-job-admin地址
    admin:
      addresses: http://localhost:8081/xxl-job-admin

5、在项目中,新建测试Job

@Slf4j
@Component
public class SyncFileLoadingStatusTask extends IJobHandler {

	@Override
    @XxlJob("syncFileLoadingStatusTask")
    public void execute() throws Exception {
    	log.info("同步文件解析状态 start...");
    	// 处理业务逻辑
    	// ....
	}
}

6、启动项目

在这里插入图片描述
出现以上日志,说明xxl-job客户端启动成功,并成功连接到服务端。
从xxl-job-admin也可以看到客户端节点:
在这里插入图片描述

7、在 xxl-job-admin 新增 job,并启动

新增Job:
在这里插入图片描述

启动、停止、查询日志:
在这里插入图片描述

8、查看执行情况

在这里插入图片描述

提供的引用内容主要围绕Spring Boot项目集成XXL - JOB展开,未提及非Spring Boot项目集成XXL - JOB的方法。不过可以从通用的项目集成思路推测可能的解决方案。 首先,环境准备上,依然需要JDK 1.8及以上版本、Maven 3.0及以上版本,XXL - Job可从GitHub(https://github.com/xuxueli/xxl - job)获取最新版本 [^3]。 接着,XXL - Job调度中心部署方面: - 数据库初始化:创建一个MySQL数据库,例如命名为xxl_job。从XXL - Job源码的doc/db/tables_xxl_job.sql文件中获取SQL脚本,在创建好的数据库中执行该脚本,创建XXL - Job所需的表结构 [^3]。 - 配置调度中心:打开xxl - job - admin模块下的src/main/resources/application.properties文件,修改数据库连接信息,示例如下: ```properties spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF - 8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root ``` 可以根据需要修改调度中心的端口,默认是8080: ```properties server.port=8080 ``` - 启动调度中心 [^3]。 对于非Spring Boot项目,引入核心依赖时,手动在项目的依赖管理文件(如Maven的pom.xml)中添加xxl - job - core依赖: ```xml <!-- xxl job --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency> ``` [^5] 在项目配置执行器,参考XXL - Job提供的执行器Sample示例项目,选择合适的执行器部署方式。如xxl - job - executor - sample - frameless项目编译打包成JAR包,命令启动即可 [^4]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiye丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值