This commit is contained in:
xueli.xue 2017-04-27 23:10:58 +08:00
parent f93302a546
commit 2d75087587
1 changed files with 55 additions and 37 deletions

View File

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