参考教程
主要参考了 xxl-job快速入门指南,写的很详细,可以一步步按教程的走。
项目环境搭建
下载项目
先到 xxl-job GitHub 地址 下载 RELEASE 的 ZIP 包。解压后,到 MySQL 执行 doc 目录下的 db 文件。
视图页面
打开 xxl-job-admin
模块。
然后修改 application.properties 配置的数据库连接:
### xxl-job, datasource
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
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
显式的加上登录调度中心的账号密码:
xxl.job.login.username=admin
xxl.job.login.password=123456
然后执行模块,访问 http://localhost:8080/xxl-job-admin/ 进入视图页面。
配置执行器
任务要注册到执行器上才能调度,一个执行器可以有多个 IP。
执行器配置文件
打开 xxl-job-executor-samples
模块。
修改 application.properties 配置的端口,模拟集群:
# web port
server.port=${random.int[10000,19999]}
### xxl-job executor server-info
xxl.job.executor.port=${random.int[9000,10000]}
配置执行器的名称:
xxl.job.executor.appname=xxl-job-executor-jackxu
配置日志地址:
xxl.job.executor.logpath=C:/xxl-job/jobhandler
执行器页面配置
到 执行器管理页面 配置上自己的执行器,机器地址先置空,执行器模块运行后会自动注册上去的。
配置任务
任务代码
package com.xxl.job.executor.service.jobhandler;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class SimpleJobHandler {
private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
@XxlJob(value = "mydemoJobHandler2", init = "", destroy = "")
public ReturnT<String> mydemoJobHandler2(String param) throws Exception {
for (int i = 0; i < 5; i++) {
XxlJobHelper.log("hello world" + i);
TimeUnit.SECONDS.sleep(2);
}
// 返回执行结果
return ReturnT.SUCCESS;
}
}
页面配置任务
到 任务管理 选择执行器,配置任务,任务的 JobHandler 就是 @XxlJob
的 value。
运行执行器
运行模块,要勾选右上角的 Allow parallel run
允许 IDEA 多次运行。
访问 执行器管理页面,可以看到地址已经注册到 OnLine 机器地址上了。
运行任务
到 任务管理 启动任务。
查看我们之前配置的日志地址:C:\xxl-job\jobhandler\2023-05-03
,可以看到日志已经打出来了: