xxl-job 与 SpringBoot 集成
1.地址
- github地址:https://github.com/xuxueli/xxl-job
- 官方文档地址:https://www.xuxueli.com/xxl-job/
2.Maven 依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.4-SNAPSHOT</version>
</dependency>
3.组成
- 调度中心:注册执行器项目的注册中心,类似于nacos,主要对执行器、任务管理(对于定时任务的管理,可以通过页面进行灵活配置Cron,发送预警邮件,设计轮询规则等)、用户管理等。
- 执行器项目:使用xxx-job的项目,会在项目启动后注册到调度中心;
- 优点:
- 调度和执行器进行了分离,降低耦合度;
- 项目只负责业务代码,减轻了项目的压力;
- 调度中心可以灵活配置,不用另外开发页面;Cron在线配置,不用重启项目等功能非常实用。
- 相比Quartz,Hutool的定时器,优势很大。
4.配置
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30
#可以只配置调度中心地址,其他的默认
xxl:
job:
admin:
addresses: http://127.0.0.1:8080/xxl-job-admin
4.执行器(项目)组件配置
- 新版可以不用配置,jar包默认处理了,老版本需要配置一下;
4.任务单例
- 也可以把一个类当做任务,或者在调度中心编辑代码等方式,以下为把方法处理为一个任务
@Component
@Slf4j
public class AcceptHandler {
// 任务名称
@XxlJob("acceptEmailJobHandler")
public void accept() {
log.debug("邮件全局定时刷新接收");
// 任务逻辑
}
}
- git项目demo路径:
5.调度中心配置
- 配置执行器:
- 配置任务:
- 测试使用: