废话就不多说了,介绍Xxl-Job的网上已经有很多,本文就不多加复制粘贴了,直接步入第二步。(PS:本文包括Xxl-Job分布式定时任务调度中心的搭建,以及SpringBoot集成XxlJob的全过程。如果不想了解搭建的小伙伴可以直接调到第三步。)
源码地址:https://github.com/xuxueli/xxl-job
我使用的2.3.0版本的,这是目前最新的版本。
下载好后,我们使用IDEA打开,可以看到如图的几个模块:
其中xxl-job-admin是我们的后台管理系统,这也是我们主要查看xxl-job日志的地方;xxl-job-core则是核心core文件,我们项目中导入依赖就主要导入这个文件;最后是xxl-job-executor-samples这里放了各个不同版本执行器的源码。
打开至/xxl-job/doc/db目录下,可以看到xxl-job需要的一些数据库初始化脚本。
我们需要在我们的数据库运行一下这些sql文件,运行完成后,会产生如下的库与对应的表
此处需要修改xxl-job-admin项目下的application.properties文件,主要是修改数据库相关配置:
将此处修改为自己的数据库配置即可。其他配置根据自己需要更改。顺带一句,笔者此处还将端口8080改为了9080。
此时我们准备工作已经做完,直接启动XxlJobAdminApplication项目即可。
注意:此处启动如果是Mac的用户可能会报错,错误信息如:
这里只需要将xxl-job/xxl-job-admin/src/main/resources目录下的logback.xml文件中的
<property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/>
修改为:
<property name="log.path" value="./data/applogs/xxl-job/xxl-job-admin.log"/>
即可。
在浏览器输入:http://127.0.0.1:9080/xxl-job-admin 即可成功访问。
用户密码分别为:admin/123456
登陆成功后可以看到此页面即为搭建成功。
<dependency>
<groupId>com.xuxueligroupId>
<artifactId>xxl-job-coreartifactId>
<version>${xxl-job.version}version>
dependency>
xxl:
job:
admin:
# xxl-job后台管理界面的地址
addresses: http://127.0.0.1:8080/xxl-job-admin
executor:
# 此执行器的名称
appname: first-study
# 此执行器的端口
port: 38801
# 此执行器的日志存放路径
logpath: logs/xxl-job/first-study
# 此执行器的日志保存时间
logretentiondays: 7
XxlJobProperties:
@Configuration
@Data
public class XxlJobProperties {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
// @Value("${xxl.job.accessToken}")
// private String accessToken;
@Value("${xxl.job.executor.appname}")
private String appname;
// @Value("${xxl.job.executor.address}")
// private String address;
// @Value("${xxl.job.executor.ip}")
// private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
}
BeanConfig:
@Configuration
@RequiredArgsConstructor
public class BeanConfig {
private final XxlJobProperties xxlJobProperties;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppname());
// xxlJobSpringExecutor.setAddress(address);
// xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(xxlJobProperties.getPort());
// xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath());
xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays());
return xxlJobSpringExecutor;
}
}
并在启动类上添加注解@EnableScheduling。
@Slf4j
@Component
@RequiredArgsConstructor
public class XxlJobTest {
@XxlJob("xxlJobTest")
public ReturnT<String> xxlJobTest(String date) {
log.info("---------xxlJobTest定时任务执行成功--------");
return ReturnT.SUCCESS;
}
}
回到 http://127.0.0.1:9080/xxl-job-admin/ 界面。
点击执行器管理 -> 新增
此处的AppName填你项目中配置的xxl.job.executor.appname名称。选择自动注册,保存即可。
点击任务管理 -> 点击执行器下拉框
选择刚刚添加的执行器,然后点击“新增”按钮,新增任务:
注意,此处的JobHandler填@XxlJob注解后面的值。填好点击保存即可。就可以看到我们已经有一条任务了,此时点击“操作”,然后点击“启动”,定时任务就运行了。笔者这里是每分钟运行一次。
此时启动我们的测试项目,会发现打印的启动日志已经注册到xxl-job。然后就能看到已经成功执行定时任务并打印日志。
到此,搭建到集成整个流程就完毕了。当然xxl-job远不止这点功能,对其他扩展信息感兴趣的小伙伴可以自行上网搜索,也可以访问Xxl-Job官方文档:https://www.xuxueli.com/xxl-job/