下载地址

搭建xxljob需要提前准备好

1
2
3
maven3+
jdk8+
mysql5.7+

1.首先初始化SQL脚本建立必须的库和表

在这里插入图片描述

2.对于解压的文件分为三个模块

1
2
3
4
5
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
:xxl-job-executor-sample-frameless:无框架版本;

其中:xxl-job-core是需要引入的源码包后续我们可以用以下形式引入

1
2
3
4
5
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>

xxl-job-admin是我们的调度中心,我们只需要把这个项目单独拿出来运行就行了,下面是运行结果

在这里插入图片描述

xxl-job-executor-sample-springboot是我们后续用boot可以参照的模板,当然也可以直接用来使用

3.xxl-job-admin配置

先修改数据库的地址,也就是上面初始化的地址

在这里插入图片描述

然后修改警报邮箱配置

在这里插入图片描述

4.警报邮箱配置

在这里插入图片描述

去自己对应邮箱的设置里面找到smtp并开启

1
注意:spring.mail.password的密码是QQ邮箱开启SMTP的授权码而非QQ密码

比如新浪

发件:POP3服务器为:pop3.sina.com.cn
收件:SMTP服务器为:smtp.sina.com.cn

qq

发件:POP3服务器为:pop.qq.com
收件:SMTP服务器为:smtp.qq.com

注意 不能自己邮箱发自己邮箱,否则收不到

在这里插入图片描述

上面就是收件的内容

5.boot整合xxljob

引入依赖

1
2
3
4
5
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>

配置文件整合

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.example.demo.config;

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

@Configuration
public class xxlConfig {
private Logger logger = LoggerFactory.getLogger(xxlConfig.class);

@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;


@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

return xxlJobSpringExecutor;
}
}

application.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 启动端口和访问路径
server.port=8089
server.servlet.context-path=/todo

# 调度中心(xxl-job-admin)的部署地址,如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";
# 为空则关闭自动注册;则需要手动注册
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=

### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=job-to-do
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
xxl.job.executor.port=9998
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30

6.定时任务的创建方式

img

@XxlJob注解是新版本提供的方式,不需要继承

旧版方式是继承IJobHander然后重写execute方法

7.界面介绍

在这里插入图片描述

在这里插入图片描述