目录
- [XXL-Job的安装和配置]
- [下载安装包]
- [解压安装包]
- [创建数据库]
- [导入数据表]
- [修改配置文件]
- [启动调度中心和执行器]
- [XXL-Job的基本使用]
- [创建任务]
- [启动任务]
- [停止任务]
- [监控任务]
- [XXL-Job的高级使用]
- [使用调度中心]
- [分片广播]
- [任务路由]
- [XXL-Job的应用实例]
- [数据同步场景]
- [报表生成场景]
- [数据备份场景]
- [XXL-Job的扩展开发]
- [自定义任务处理器]
- [自定义触发器]
- [自定义报警]
- [XXL-Job的集成与部署]
- [集成到Spring Boot]
- [集成到Spring Cloud]
- [部署和管理]
XXL-Job是一款开源的分布式任务调度系统,可以实现任务的定时执行、分布式执行、任务调度监控等功能。下面是安装和配置XXL-Job的步骤:
- 下载安装包
从XXL-Job的官方网站(https://www.xuxueli.com/xxl-job/)下载最新版本的安装包。
- 解压安装包
在服务器上解压下载的压缩包,可以使用以下命令:
tar -zxvf xxl-job-2.x.x.tar.gz
- 创建数据库
XXL-Job需要使用MySQL数据库存储任务信息,需要先创建一个数据库。可以使用以下命令:
mysql -hlocalhost -uroot -p
CREATE DATABASE xxl_job;
- 导入数据表
将XXL-Job安装包中的doc/db/tables_xxl_job.sql
脚本导入到xxl_job
数据库中,可以使用以下命令:
mysql -hlocalhost -uroot -p xxl_job < /path/to/tables_xxl_job.sql
- 修改配置文件
修改文件夹/conf
下的xxl-job-admin.properties
和xxl-job-executor.properties
配置文件,分别配置调度中心和执行器的相关信息,包括数据库连接、端口号、日志路径等。
例如,修改xxl-job-admin.properties
中的以下配置:
# xxl-job admin address list, such as "http://address1/xxl-job-admin,http://address2/xxl-job-admin"
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
# xxl-job access token
xxl.job.accessToken=
# xxl-job executor registry name
xxl.job.executor.appname=xxl-job-executor-sample
# xxl-job executor address
xxl.job.executor.address=http://localhost:9999/xxl-job-executor
# xxl-job executor IP
xxl.job.executor.ip=
# xxl-job executor port
xxl.job.executor.port=9999
# xxl-job executor log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# xxl-job executor log retention days
xxl.job.executor.logretentiondays=30
- 启动调度中心和执行器
在安装好XXL-Job并配置好相关信息后,可以通过以下命令启动调度中心和执行器:
sh bin/start.sh admin
sh bin/start.sh executor
- 验证安装
在浏览器中访问http://localhost:8080/xxl-job-admin/
,可以看到XXL-Job的调度中心界面,输入用户名和密码(默认为admin/123456
)后登录。如果可以正常登录并显示调度中心页面,则表示XXL-Job已经安装成功。
- 配置执行器
在调度中心中添加执行器,点击左侧菜单中的执行器管理
,然后点击新增
按钮,填写执行器信息,例如:
执行器名称:xxl-job-executor-sample
执行器地址:http://localhost:9999/xxl-job-executor
执行器端口:9999
执行器日志路径:/data/applogs/xxl-job/jobhandler
点击保存
后,执行器就可以被调度中心管理了。
- 测试任务
在调度中心中创建一个简单的任务,例如:
任务名称:testJob
任务描述:测试任务
任务路由策略:第一个
任务执行器:xxl-job-executor-sample
任务执行参数:{"name":"test"}
Cron表达式:0/5 * * *2 * ? *
点击保存
后,可以手动启动该任务,或者等待定时触发执行。
- 监控执行情况
在调度中心中可以查看任务的执行情况,包括执行次数、执行状态、执行日志等。可以通过左侧菜单中的任务监控
、任务日志
、报警记录
等功能查看任务的详细信息。
- 高级使用
除了基本的任务调度功能外,XXL-Job还提供了一些高级功能,例如:
- 使用调度中心:可以将任务分发到多个执行器上执行,提高任务执行效率。
- 分片广播:将任务拆分成多个子任务并在多个执行器上并行执行,提高任务执行速度。
- 任务路由:根据任务的路由策略将任务分发到指定的执行器上执行。
这些高级功能可以通过调度中心的相关配置来实现。
- 应用实例
XXL-Job可以应用于多种场景,例如:
- 数据同步场景:可以定时同步数据到其他系统中。
- 报表生成场景:可以定时生成报表并发送给相关人员。
- 数据备份场景:可以定时备份数据并存储到指定的位置。
下面以数据同步场景为例,说明如何使用XXL-Job实现数据同步:
- 创建一个数据同步任务,填写任务名称、任务描述、任务路由策略、任务执行器、任务执行参数等信息,例如:
任务名称:syncData
任务描述:同步数据到其他系统
任务路由策略:第一个
任务执行器:xxl-job-executor-sample
任务执行参数:{"source":"db1","target":"db2"}
Cron表达式:0 0/5 * * * ? *
- 在任务执行器中实现任务处理逻辑,例如:
public class SyncDataTask implements IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
JSONObject jsonObj = JSON.parseObject(param);
String source = jsonObj.getString("source");
String target = jsonObj.getString("target");
// 同步数据的逻辑
...
return ReturnT.SUCCESS;
}
}
- 在执行器的配置文件中添加自定义任务处理器,例如:
# xxl-job executor job handler13. XXL-Job的扩展开发
除了使用XXL-Job提供的基本功能外,还可以通过扩展开发来实现更加个性化的需求。XXL-Job提供了多种扩展开发方式,包括:
- 自定义任务处理器:可以自定义任务执行逻辑,实现更加复杂的业务需求。
- 自定义触发器:可以自定义任务触发方式,例如基于事件的触发器。
- 自定义报警:可以自定义报警方式,例如基于微信、短信等方式的报警。
下面以自定义任务处理器为例,说明如何扩展开发XXL-Job:
XXL-Job可以应用于多种场景,例如:
数据同步场景:可以定时同步数据到其他系统中。
报表生成场景:可以定时生成报表并发送给相关人员。
数据备份场景:可以定时备份数据并存储到指定的位置。
下面以数据同步场景为例,说明如何使用XXL-Job实现数据同步:
创建一个数据同步任务,填写任务名称、任务描述、任务路由策略、任务执行器、任务执行参数等信息,例如:
任务名称:syncData
任务描述:同步数据到其他系统
任务路由策略:第一个
任务执行器:xxl-job-executor-sample
任务执行参数:{"source":"db1","target":"db2"}
Cron表达式:0 0/5 * * * ? *
在任务执行器中实现任务处理逻辑,例如:
java
public class SyncDataTask implements IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
JSONObject jsonObj = JSON.parseObject(param);
String source = jsonObj.getString("source");
String target = jsonObj.getString("target");
// 同步数据的逻辑
...
return ReturnT.SUCCESS;
}
}
在执行器的配置文件中添加自定义任务处理器,例如:
# xxl-job executor job handler
xxl.job.executor.jobhandler=myJobHandler
在任务配置中指定自定义任务处理器,例如:
任务名称:myJob
任务描述:自定义任务
任务路由策略:第一个
任务执行器:xxl-job-executor-sample
任务执行参数:{"param1":"value1","param2":"value2"}
Cron表达式:0/5 * * * * ? *
任务处理器:myJobHandler
在自定义任务处理器中实现任务处理逻辑,例如:
java
public class MyJobHandler implements IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
JSONObject jsonObj = JSON.parseObject(param);
String param1 = jsonObj.getString("param1");
String param2 = jsonObj.getString("param2");
// 自定义任务处理逻辑
...
return ReturnT.SUCCESS;
}
}
XXL-Job的集成与部署
XXL-Job可以集成到Spring Boot和Spring Cloud中使用,也可以使用Docker等容器技术进行部署和管理。下面以集成到Spring Boot为例,说明如何集成和部署XXL-Job:
添加Maven依赖
在Spring Boot项目的pom.xml文件中添加以下依赖:
xml
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${xxl.job.version}</version>
</dependency>
配置XXL-Job
在Spring Boot项目的配置文件中添加以下配置:
cos
# xxl-job admin address list, such as "http://address1/xxl-job-admin,http://address2/xxl-job-admin"
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
# xxl-job access token
xxl.job.accessToken=
# xxl-job executor registry name
xxl.job.executor.appname=xxl-job-executor-sample
# xxl-job executor address
xxl.job.executor.address=http://localhost:9999/xxl-job-executor
# xxl-job executor IP
xxl.job.executor.ip=
# xxl-job executor port
xxl.job.executor.port=9999
# xxl-job executor log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# xxl-job executor log retention days
xxl.job.executor.logretentiondays=30
实现任务处理逻辑
在Spring Boot项目中实现任务处理逻辑,例如:
java
@Component
public class MyJobHandler {
@XxlJob("myJobHandler")
public ReturnT<String> myJobHandler(String param) {
// 自定义任务处理逻辑
...
return ReturnT.SUCCESS;
}
}
启动执行器
在Spring Boot项目中添加执行器启动类,例如:
java
@SpringBootApplication
@EnableXxlJob
public class XxlJobExecutorApplication {
public static void main(String[] args) {
SpringApplication.run(XxlJobExecutorApplication.class, args);
}
}