XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
特性这里不多做介绍,可以去官网看。Spring自带的定时任务,无法进行集群,Quartz是个伪集群框架 不推荐集群时候进行使用。
文档地址
源码仓库地址
源码仓库地址 | Release Download |
---|---|
GitHub - xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度平台XXL-JOB) | Download |
xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 | Download |
中央仓库地址
com.xuxueli
xxl-job-core
${最新稳定版本}
第一步:先克隆下来admin管理平台页面(这里用的Gitee,GitHub地址上面有)
git clone http://gitee.com/xuxueli0323/xxl-job
第二步:运行拉取下面项目里面doc/db/tables_xxl_job.sql 文件,在数据库工具中跑脚本。
第三步:将其拷贝下来的项目进行启动,总共有三个模块,要全部启动,三个模块里面都有启动类,一键式启动。
xxl-job-admin:后台管理界面,启动完成后,输入http://localhost:8083/xxl-job-admin 就可以访问了。
点击新增按钮,即可创建新任务,这里重点需要填写 Core表达式,和 JobHandler,这个JobHandler 就是下面模块 @XxlJob("demoJobHandler") 注解里面的内容。
点击执行一次,控制台即可打印出消息。你可以在该方法下面加一个自定义控制台输出。
xxl-....-frameless:后台管理界面进入后默认里面有几个任务,可以在该模块里面更改代码
xxl-job-....-springboot:该模块是给你看的SpringBoot的样例,因为我们肯定是自己要用SpringBoot整合xxl-job的,所以它提供了这样一个demo,我们到时候可以新建一个SpringBoot项目,只需要一个
一、导入pom
com.xuxueli
xxl-job-core
2.3.1
二、复制config/XxlJobConfig
@Configuration
public class XxlJobConfig {
@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() {
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.proterties配置信息 注意调度中心的地址,我这里改成了8083,对应admin那个模块端口号也要改成80
# xxl-job配置
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8083/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=default_token
### 执行器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
如图,就是我新建的SpringBoot项目 整合xxl-job实现功能。
部署分为两种方式,第一种:使用Docker,这种官网有介绍,首先拉取镜像,然后进行run 即可,注意端口放心,需要放行两个端口,一个是admin管理界面端口,一个是调度器端口9999
使用docker部署(不推荐,可能会遇到端口等之类的问题)
1.拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.1
2.运行容器
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=666888" -p 8083:8080 -p 9091:9999 -v /tmp:/data/applogs --name xxl-job-admin -d --link mysql:mysql xuxueli/xxl-job-admin:2.3.1
##注意:运行之前 先要把数据库装了,并且跑脚本doc/xxl-job下面的数据库脚本。
使用手动部署(推荐,这种很稳)还是一样的 要保证服务器里面数据库在运行,且跑了xxl数据库脚本。
第一步:将其把拉取到本地的xxl-job项目打成成jar
第二步:将其把jar包上传至服务器)
第三步:跟部署普通Javaweb项目一样了,敲部署命令(java - jar xxl-admin 当然了 一般使用nohup 命令 这里不多做介绍 )
第四步:将其把SpringBoot整合xxl-job项目上传到服务器 进行部署。
然后输入 ip + 端口号 + /xxl-job-admin 就能访问到控制台界面了,就可以添加任务了,其它步骤跟上面一样了。