|
|
|
@ -107,14 +107,14 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
|
|
|
|
|
## 二、快速入门
|
|
|
|
|
|
|
|
|
|
#### 2.1 初始化“调度数据库”
|
|
|
|
|
### 2.1 初始化“调度数据库”
|
|
|
|
|
请下载项目源码并解压,获取 "调度数据库初始化SQL脚本"(脚本文件为: 源码解压根目录\xxl-job\db\tables_xxl_job.sql) 并执行即可。正常情况下,应该生成如下图所示16张表;
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/10181507_8psZ.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
调度中心集群情况下,集群节点务必连接同一个mysql实例;如果mysql做主从,调度中心集群节点务必强制走主库;
|
|
|
|
|
|
|
|
|
|
#### 2.2 编译源码
|
|
|
|
|
### 2.2 编译源码
|
|
|
|
|
解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下图所示:
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201607/23222522_JGCc.png "在这里输入图片标题")
|
|
|
|
@ -123,12 +123,13 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
- xxl-job-core:公共依赖
|
|
|
|
|
- xxl-job-executor-example:执行器(可直接使用该执行器,也可以将现有项目改造成执行器使用)
|
|
|
|
|
|
|
|
|
|
#### 2.3 配置部署“调度中心”
|
|
|
|
|
### 2.3 配置部署“调度中心”
|
|
|
|
|
|
|
|
|
|
调度中心项目:xxl-job-admin
|
|
|
|
|
作用:统一管理任务调度平台上调度任务,负责触发调度执行。
|
|
|
|
|
|
|
|
|
|
**调度中心配置**:配置文件以及配置属性如下图所示。
|
|
|
|
|
#### 调度中心配置:
|
|
|
|
|
配置文件以及配置属性如下图所示。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/10172754_5DUl.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
@ -154,20 +155,21 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
xxl.job.login.username=admin
|
|
|
|
|
xxl.job.login.password=123456
|
|
|
|
|
|
|
|
|
|
**部署项目**:如果已经正确进行上述配置,可将项目编译打war包并部署到tomcat中。
|
|
|
|
|
|
|
|
|
|
#### 部署项目:
|
|
|
|
|
如果已经正确进行上述配置,可将项目编译打war包并部署到tomcat中。
|
|
|
|
|
访问链接:http://localhost:8080/xxl-job-admin/ ,登陆后运行界面如下图所示
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/25145242_KIKQ.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
至此“调度中心”项目已经部署成功。
|
|
|
|
|
|
|
|
|
|
#### 2.4 配置部署“执行器项目”
|
|
|
|
|
### 2.4 配置部署“执行器项目”
|
|
|
|
|
|
|
|
|
|
“执行器”项目:xxl-job-executor-example
|
|
|
|
|
作用:负责接收“调度中心”的调度并执行;
|
|
|
|
|
|
|
|
|
|
**执行器配置**:配置文件以及配置属性如下图所示。
|
|
|
|
|
#### 执行器配置:
|
|
|
|
|
配置文件以及配置属性如下图所示。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/13150738_Fv8v.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
@ -183,7 +185,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
xxl.job.executor.port=9999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**组件配置**:配置内容如下图所示。
|
|
|
|
|
#### 组件配置:
|
|
|
|
|
配置内容如下图所示。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/27204724_WW5m.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
@ -191,23 +194,23 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
2、执行器注册器(XxlJobExecutor.registHelper): 默认使用系统提供的 "DbRegistHelper"(依赖JDBC), 推荐将其抽象为RPC远程服务, 可取消对JDBC的依赖;如不启用执行自动注册功能,也可忽略JDBC配置; )
|
|
|
|
|
3、XXL-JOB公共数据源 "xxlJobDataSource": 仅在启动 "DbRegistHelper" 或 "DbGlueLoader" 时才需要, 否则可删除
|
|
|
|
|
|
|
|
|
|
**部署项目**:
|
|
|
|
|
#### 部署项目:
|
|
|
|
|
至此“执行器”项目已经部署结束。
|
|
|
|
|
|
|
|
|
|
#### 2.5 开发第一个任务“Hello World”
|
|
|
|
|
### 2.5 开发第一个任务“Hello World”
|
|
|
|
|
本示例以新建一个 “GLUE模式(Java)” 运行模式的任务为例。更多有关任务的详细配置,请查看“章节三:任务详解”。
|
|
|
|
|
( “GLUE模式(Java)”的执行代码托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)
|
|
|
|
|
|
|
|
|
|
**前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;**
|
|
|
|
|
#### 前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;
|
|
|
|
|
|
|
|
|
|
- **步骤一:新建任务**:
|
|
|
|
|
#### 步骤一:新建任务:
|
|
|
|
|
登陆调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/27205910_o8HQ.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/27210202_SE2u.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
- **步骤二:“GLUE模式(Java)” 任务开发**:
|
|
|
|
|
#### 步骤二:“GLUE模式(Java)” 任务开发:
|
|
|
|
|
请点击任务右侧 “GLUE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE模式(Java)” 运行模式的任务默认已经初始化了示例任务代码,即打印Hello World。
|
|
|
|
|
( “GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务,详细介绍请查看第三章节)
|
|
|
|
|
|
|
|
|
@ -215,10 +218,10 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/27210314_dNUJ.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
- **步骤三:触发执行**:
|
|
|
|
|
#### 步骤三:触发执行:
|
|
|
|
|
请点击任务右侧 “执行” 按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度出发)。
|
|
|
|
|
|
|
|
|
|
- **步骤四:查看日志**:
|
|
|
|
|
#### 步骤四:查看日志:
|
|
|
|
|
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。
|
|
|
|
|
在任务日志界面中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。
|
|
|
|
|
|
|
|
|
@ -230,7 +233,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
|
|
|
|
|
## 三、任务详解
|
|
|
|
|
|
|
|
|
|
**配置属性详细说明:**
|
|
|
|
|
### 配置属性详细说明:
|
|
|
|
|
|
|
|
|
|
- 执行器:任务的绑定的执行器,任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能; 另一方面也可以方便的进行任务分组。每个任务必须绑定一个执行器, 可在 "执行器管理" 进行设置;
|
|
|
|
|
- 描述:任务的描述信息,便于任务管理;
|
|
|
|
@ -244,19 +247,21 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
|
|
|
|
|
LEAST_RECENTLY_USED(最近最久未使用):单个JOB对应的每个执行器,最久为使用的优先被选举;
|
|
|
|
|
FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
|
|
|
|
|
- Cron:触发任务执行的Cron表达式;
|
|
|
|
|
- JobHandler + GLUE复选框:
|
|
|
|
|
BEAN模式任务:不选中GLUE复选框,JobHandler输入框为必填项,需要输入该任务对应的JobHandler的名称,即执行器中新开发的JobHandler类“@JobHander”注解自定义的value值;
|
|
|
|
|
GLUE模式任务:选中GLUE复选框,JobHandler输入框被禁用,不必输入,因为此时任务逻辑维护在线上。
|
|
|
|
|
- 运行模式:
|
|
|
|
|
BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 "JobHandler" 属性匹配执行器中任务;
|
|
|
|
|
GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;
|
|
|
|
|
GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段shell脚本;
|
|
|
|
|
GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段python脚本;
|
|
|
|
|
- JobHandler:运行模式为 "BEAN模式" 时生效,对应执行器中新开发的JobHandler类“@JobHander”注解自定义的value值;
|
|
|
|
|
- 子任务Key:每个任务都拥有一个唯一的任务Key(任务Key可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务Key所对应的任务的一次主动调度。
|
|
|
|
|
- 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数抓换成数组传入;
|
|
|
|
|
- 报警邮件:任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔;
|
|
|
|
|
- 负责人:任务的负责人;
|
|
|
|
|
- 子任务Key:每个任务都拥有一个唯一的任务Key(任务Key可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务Key所对应的任务的一次主动调度。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.1 BEAN模式任务
|
|
|
|
|
Bean模式任务:任务逻辑以JobHandler的形式存在于“执行器”所在项目中,开发流程如下:
|
|
|
|
|
|
|
|
|
|
### 3.1 BEAN模式
|
|
|
|
|
任务逻辑以JobHandler的形式存在于“执行器”所在项目中,开发流程如下:
|
|
|
|
|
|
|
|
|
|
- **步骤一:执行器项目中,开发JobHandler**:
|
|
|
|
|
#### 步骤一:执行器项目中,开发JobHandler:
|
|
|
|
|
- 1、 新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
|
|
|
|
|
- 2、 该类被Spring容器扫描为Bean实例,如加“@Service注解”;
|
|
|
|
|
- 3、 添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
|
|
|
|
@ -264,26 +269,39 @@ Bean模式任务:任务逻辑以JobHandler的形式存在于“执行器”所
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201607/23232347_oLlM.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
- **步骤二:调度中心,新建调度任务并配置(BEAN模式)**
|
|
|
|
|
#### 步骤二:调度中心,新建调度任务
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "BEAN模式",JobHandler属性填写任务注解@JobHander中定义的值;
|
|
|
|
|
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,需要注意的是“JobHandler + GLUE复选框”任务属性,需要按照“GLUE模式”任务进行配置;
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/27225124_yrcO.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/12220856_rd3R.png "在这里输入图片标题")
|
|
|
|
|
### 3.2 GLUE模式(Java)
|
|
|
|
|
任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。开发流程如下:
|
|
|
|
|
|
|
|
|
|
#### 3.2 GLUE模式任务
|
|
|
|
|
GLUE模式任务:任务逻辑以GLUE代码的形式存储在DB中,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。开发流程如下:
|
|
|
|
|
#### 步骤一:调度中心,新建调度任务:
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Java)";
|
|
|
|
|
|
|
|
|
|
- **步骤一:调度中心,新建调度任务并配置(GLUE模式)**:
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201704/27210202_SE2u.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,需要注意的是“JobHandler + GLUE复选框”任务属性,需要按照“GLUE模式”任务进行配置;
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/12223319_huug.png "在这里输入图片标题")
|
|
|
|
|
版本回溯功能(支持30个版本的版本回溯):在GLUE任务的Web IDE界面,选择右上角下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;
|
|
|
|
|
|
|
|
|
|
- **步骤二:开发GLUE代码**:
|
|
|
|
|
### 3.3 GLUE模式(Shell)
|
|
|
|
|
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮(仅GLUE模式任务支持),将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中),可使用@Resource或@Autoward注解注入“执行器”项目中的Spring服务;
|
|
|
|
|
#### 步骤一:调度中心,新建调度任务
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Shell)";
|
|
|
|
|
|
|
|
|
|
版本回溯功能(支持30个版本的版本回溯):可参考下图,选择下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
|
|
|
|
|
### 3.4 GLUE模式(Python)
|
|
|
|
|
|
|
|
|
|
#### 步骤一:调度中心,新建调度任务
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Python)";
|
|
|
|
|
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
|
|
|
|
|
## 四、任务管理
|
|
|
|
|
#### 4.0 配置执行器
|
|
|
|
|