# 简介
XXL-JOB是一个轻量级分布式任务调度平台。特点是平台化,易部署,开发迅速、学习简单、轻量级、易扩展。由调度中心和执行器功能完成定时任务的执行。调度中心负责统一调度,执行器负责接收调度并执行。
# 正式搭建
# 一、Gitee拉取代码
许雪里/xxl-job (opens new window)这里以一个稳定版本2.2.0版本拉取,在本地打开后是这样的:
# xxl-job共分为3大部分:任务调度器平台、任务执行器、任务处理器(jobHandler)、
任务调度器平台: 就是上述拉取下来的代码中的xxl-job-admin项目,这个项目就是任务调度平台。我们只需要配置一下就可以有自己的一个平台环境。而这个人任务调度器平台我们就可以理解为eureka(注册中心)
**任务执行器:**执行任务处理器
**任务处理器(jobHandler):**通过自己在项目中自定义不同的任务处理器来让任务执行器执行,并通过调度器平台 处理不同的任务。
# 二、搭建任务调度器平台
# 1.根据拉取的代码中存放的tables_xxl_job.sql利用Navicat进行数据库导入
# 2.修改配置文件(端口号、数据库、邮箱)
# 3.配置logback.xml
修改日志存放位置,然后利用命令给文件赋予权限chmod -R 777 日志位置
# 4.启动任务调度器
利用package进行打包jar上传
#将jar通过后台进程启动,并将启动信息指向xxl-job-admin.log中
nohup java -jar xxl-job-admin.jar > xxl-job-admin.log 2>&1 &
#查看日志
tail -f xxl-job-admin.log
1
2
3
4
5
2
3
4
5
# 5、访问任务调度中心
访问地址:http://自己的ip:自己设置的端口号/xxl-job-admin
默认账号:admin 密码:123456
出现这两个界面的时候表明任务调度中心搭建完成。
# 三、项目引入xxl-job
# 1、引入相关坐标(注意服务的交互需要依赖Tomcat容器)
<!-- xxl-job-core -->
<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.1</version>
</dependency>
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2、配置yaml配置文件
server:
port: 8081
#xxl-job
xxl:
job:
admin:
# 注意内网地址
# addresses: http://10.30.40.3:9000/xxl-job-admin
addresses: http://10.0.12.15:9000/xxl-job-admin
# 与配置中心留下的token保持一致
accessToken: zuishuaideshihao
executor:
# AppName
appname: xxl-job-demo
address:
ip:
#默认9999,为0自动获取
port: 9999
# 执行器运行日志文件存储磁盘路径 ![选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath: /data/xxl-job/jobhandler
# 执行器日志文件保存天数 ![选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
logretentiondays: 7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
注意这里的文件路径也需要自己去创建,并且授予权限。
# 3.配置日志
拉取的xxl-job项目中找到** logback.xml**,复制到你自己项目的位置,修改相关日志路径,创建并赋予权限
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName>
<property name="log.path" value="/data/xxl-job/xxl-job-demo.log"/>
<!-- <property name="log.path" value="/Users/bjys/Desktop/desk_word/xxl-job/demo.log"/>-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName ![%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level ![%thread] %logger{36} ![%file : %line] %msg%n
</pattern>
</encoder>
<filter class="com.xxl.job.core.config.XxlJobLogFilter"/>
</appender>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 4.编写配置类
# 5.创建任务处理器类
类似样例中的这个进行开发即可。
/**
* @author hanhao
* @description 定时任务demo
* @date 2024/6/24
*/
@Component
public class JobDemo {
@XxlJob("demo")
public void runJobDemo() {
LocalDateTime localDateTime = LocalDateTime.now();
String nowTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
XxlJobHelper.log("hello world!It is :" + nowTime);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
全部配置好之后,将自己的项目打包并部署到linux中,利用java -jar顺利启动。
# 四、操作任务调度中心
# 1.新增执行器
# 2.新增任务处理器