XXL-Job入门:项目集成、任务编写与页面配置完整教程
在平常的开发工作中,我们经常会使用到定时任务,比如定时更新看板数据、定时任务提醒、定时处理订单状态等等。像之前开发中用过 quartz,@scheduled 等方式,现在使用的 xxl-job 比较多,那么 xxl-job 应该如何引入到项目中,以及 xxl-job 如何使用呢?今天来总结一下。
一:安装 xxl-job
在之前的博客中,介绍过如何在 docker 下安装 xxl-job,今天主要是本地下载 xxl-job 代码,进行启动,与本地项目进行互联,学习 xxl-job 的基本用法。
1:下载 xxl-job 项目代码
代码地址:https://github.com/xuxueli/xxl-job,可以通过 git clone 或者下载代码包等,下载完成后在idea中打开。
2:初始化 xxl-job 数据库
数据库脚本位置如下:
执行 ables_xxl_job.sql 文件,执行完成后,数据库表如下:
3:修改项目数据库配置
修改 application.properties 文件,位置如下:
spring.datasource.url=jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4:根据需要修改端口
5:启动 xxl-job
6:登录
通过 http://localhost:9229/xxl-job-admin 进行访问,可以看到登录页面如下:
登录的用户名和密码在 xxl_job_user 表中维护着,默认的用户名为 admin,密码为 123456,点击登录如下:
二:项目引入 xxl-job
1:引入 maven 依赖
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.0</version>
</dependency>
2:修改配置文件
在application.yml 文件中添加 xxl-job 配置,配置如下:
xxl_job:admin_addresses: http://127.0.0.1:9229/xxl-job-adminaccessToken: default_tokenexecutor_appname: mall-managementexecutor_address:executor_ip:executor_port: 9999executor_logpath: /data/applogs/xxl-job/jobhandlerexecutor_logretentiondays: 30
3:xxl-job 配置类
@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.executor_address}")private String address;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Value("${xxl.job.accessToken:}")private String accessToken;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}
4:编写定时任务
@Slf4j
@Component
public class managementXxlJobHandle {/*** 测试定时任务*/@XxlJob("xxlJobTestTask")public void xxlJobTestTask() {log.info("测试定时任务开始");String jobParam = XxlJobHelper.getJobParam();if (ObjectUtils.isNotEmpty(jobParam)) {log.info("业务逻辑处理,入参为:{}", jobParam);}log.info("测试定时任务结束");}}
三:配置定时任务并测试
1:新建定时任务执行器
2:新建定制任务
3:执行定时任务
发现调用定时任务失败,报错如下:
经过定位,发现是 xxl-job 中配置的 accessToken 和 项目中配置的 accessToken 不一致导致的,如图:
修改 accessToken 后进行测试,调用成功:
查看代码日志,打印出来相关日志:
四:总结
以上为项目中引入xxl-job定时任务的主要步骤。下载xxl-job项目代码,启动定时任务。在商城管理项目中引入 xxl-job 依赖包,配置 XxlJobConfig,编写定时任务。在 xxl-job 执行器管理页面新增执行器,新增定时任务,然后进行任务调用,调用的频次在任务中配置。