事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。

This commit is contained in:
xuxueli 2017-08-31 22:43:40 +08:00
parent aef9ef6c66
commit 0361025d57
2 changed files with 46 additions and 4 deletions

View File

@ -36,6 +36,7 @@ XXL-JOB是一个轻量级分布式任务调度框架其核心设计目标是
- 22、失败处理策略调度失败时的处理策略策略包括失败告警默认、失败重试 - 22、失败处理策略调度失败时的处理策略策略包括失败告警默认、失败重试
- 23、分片广播任务执行器集群部署时任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务; - 23、分片广播任务执行器集群部署时任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
- 24、动态分片分片广播任务以执行器为维度进行分片支持动态扩容执行器集群从而动态增加分片数量协同进行业务处理在进行大数据量业务操作时可显著提升任务处理能力和速度。 - 24、动态分片分片广播任务以执行器为维度进行分片支持动态扩容执行器集群从而动态增加分片数量协同进行业务处理在进行大数据量业务操作时可显著提升任务处理能力和速度。
- 25、事件触发除了"Cron方式"和"任务依赖方式"触发任务执行之外支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务可根据业务事件灵活触发。
### 1.3 发展 ### 1.3 发展
于2015年中我在github上创建XXL-JOB项目仓库并提交第一个commit随之进行系统结构设计UI选型交互设计…… 于2015年中我在github上创建XXL-JOB项目仓库并提交第一个commit随之进行系统结构设计UI选型交互设计……
@ -174,7 +175,7 @@ XXL-JOB是一个轻量级分布式任务调度框架其核心设计目标是
### 2.3 配置部署“调度中心” ### 2.3 配置部署“调度中心”
调度中心项目xxl-job-admin 调度中心项目xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行。 作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台
#### 步骤一:调度中心配置: #### 步骤一:调度中心配置:
调度中心配置文件地址: 调度中心配置文件地址:
@ -223,7 +224,7 @@ XXL-JOB是一个轻量级分布式任务调度框架其核心设计目标是
### 2.4 配置部署“执行器项目” ### 2.4 配置部署“执行器项目”
“执行器”项目xxl-job-executor-sample-spring (如新建执行器项目可参考该Sample示例执行器项目的配置步骤) “执行器”项目xxl-job-executor-sample-spring (如新建执行器项目可参考该Sample示例执行器项目的配置步骤)
作用:负责接收“调度中心”的调度并执行; 作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。
#### 步骤一maven依赖 #### 步骤一maven依赖
确认pom文件中引入了 "xxl-job-core" 的maven依赖 确认pom文件中引入了 "xxl-job-core" 的maven依赖
@ -779,6 +780,31 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件需要通过
- 设置一调度中心和执行器均不设置AccessToken关闭安全性校验 - 设置一调度中心和执行器均不设置AccessToken关闭安全性校验
- 设置二调度中心和执行器设置了相同的AccessToken - 设置二调度中心和执行器设置了相同的AccessToken
### 5.11 调度中心API服务
调度中心提供了API服务供执行器和业务方选择使用目前提供的API服务有
1、任务结果回调服务
2、执行器注册服务
3、执行器注册摘除服务
4、触发任务单次执行器服务
调度中心API服务位置com.xxl.job.core.biz.AdminBiz.java
调度中心API服务请求参考代码com.xxl.job.dao.impl.AdminBizTest.java
```
// 该地址为调度中心部署跟地址,如果调度中心部署地址变动需要做相应调整
String addressUrl = "http://127.0.0.1:8080/xxl-job-admin".concat(AdminBiz.MAPPING);
String accessToken = null;
AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();
// 任务ID
int jobId = 1;
ReturnT<String> returnT = adminBiz.triggerJob(jobId);
Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
```
## 六、版本更新日志 ## 六、版本更新日志
### 6.1 版本 V1.1.x新特性[2015-12-05] ### 6.1 版本 V1.1.x新特性[2015-12-05]
@ -992,7 +1018,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 7、执行器注册线程销毁时, 主动摘除注册机器信息,提高执行器注册的实时性; - 7、执行器注册线程销毁时, 主动摘除注册机器信息,提高执行器注册的实时性;
- 8、调度中心任务监控线程销毁时批量对失败任务告警防止告警信息丢失 - 8、调度中心任务监控线程销毁时批量对失败任务告警防止告警信息丢失
- 9、调度中心API服务支持API方式触发任务执行 - 9、调度中心API服务支持API方式触发任务执行
- 10、事件调度系统支持Cron、子任务触发、事件触发API三种方式触发任务调度 - 10、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务可根据业务事件灵活触发。
### TODO LIST ### TODO LIST
- 1、任务权限管理执行器为粒度分配权限核心操作校验权限 - 1、任务权限管理执行器为粒度分配权限核心操作校验权限

View File

@ -9,7 +9,8 @@ import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
/** /**
* admin-api client, test * admin api test
*
* @author xuxueli 2017-07-28 22:14:52 * @author xuxueli 2017-07-28 22:14:52
*/ */
public class AdminBizTest { public class AdminBizTest {
@ -18,6 +19,11 @@ public class AdminBizTest {
private static String addressUrl = "http://127.0.0.1:8080/xxl-job-admin".concat(AdminBiz.MAPPING); private static String addressUrl = "http://127.0.0.1:8080/xxl-job-admin".concat(AdminBiz.MAPPING);
private static String accessToken = null; private static String accessToken = null;
/**
* registry executor
*
* @throws Exception
*/
@Test @Test
public void registryTest() throws Exception { public void registryTest() throws Exception {
AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject(); AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();
@ -28,6 +34,11 @@ public class AdminBizTest {
Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE); Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
} }
/**
* registry executor remove
*
* @throws Exception
*/
@Test @Test
public void registryRemove() throws Exception { public void registryRemove() throws Exception {
AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject(); AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();
@ -38,6 +49,11 @@ public class AdminBizTest {
Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE); Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
} }
/**
* trigger job for once
*
* @throws Exception
*/
@Test @Test
public void triggerJob() throws Exception { public void triggerJob() throws Exception {
AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject(); AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();