From 0361025d573bcac59c6fc479da096ca0465559ad Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Thu, 31 Aug 2017 22:43:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E8=A7=A6=E5=8F=91=EF=BC=9A?= =?UTF-8?q?=E9=99=A4=E4=BA=86"Cron=E6=96=B9=E5=BC=8F"=E5=92=8C"=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=BE=9D=E8=B5=96=E6=96=B9=E5=BC=8F"=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E4=B9=8B=E5=A4=96?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=9F=BA=E4=BA=8E=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E8=A7=A6=E5=8F=91=E4=BB=BB=E5=8A=A1=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E3=80=82=E8=B0=83=E5=BA=A6=E4=B8=AD=E5=BF=83=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E4=BB=BB=E5=8A=A1=E5=8D=95=E6=AC=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=9A=84API=E6=9C=8D=E5=8A=A1=EF=BC=8C=E5=8F=AF?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E4=B8=9A=E5=8A=A1=E4=BA=8B=E4=BB=B6=E7=81=B5?= =?UTF-8?q?=E6=B4=BB=E8=A7=A6=E5=8F=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/XXL-JOB官方文档.md | 32 +++++++++++++++++-- .../com/xxl/job/dao/impl/AdminBizTest.java | 18 ++++++++++- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 143b1305..d19e3fa3 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -36,6 +36,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 - 22、失败处理策略;调度失败时的处理策略,策略包括:失败告警(默认)、失败重试; - 23、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务; - 24、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。 +- 25、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。 ### 1.3 发展 于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… @@ -174,7 +175,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 ### 2.3 配置部署“调度中心” 调度中心项目:xxl-job-admin - 作用:统一管理任务调度平台上调度任务,负责触发调度执行。 + 作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。 #### 步骤一:调度中心配置: 调度中心配置文件地址: @@ -223,7 +224,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 ### 2.4 配置部署“执行器项目” “执行器”项目:xxl-job-executor-sample-spring (如新建执行器项目,可参考该Sample示例执行器项目的配置步骤;) - 作用:负责接收“调度中心”的调度并执行; + 作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。 #### 步骤一:maven依赖 确认pom文件中引入了 "xxl-job-core" 的maven依赖; @@ -779,6 +780,31 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过 - 设置一:调度中心和执行器,均不设置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 returnT = adminBiz.triggerJob(jobId); +Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE); + +``` + ## 六、版本更新日志 ### 6.1 版本 V1.1.x,新特性[2015-12-05] @@ -992,7 +1018,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 - 7、执行器注册线程销毁时, 主动摘除注册机器信息,提高执行器注册的实时性; - 8、调度中心任务监控线程销毁时,批量对失败任务告警,防止告警信息丢失; - 9、调度中心API服务:支持API方式触发任务执行; -- 10、事件调度:系统支持Cron、子任务触发、事件触发(API)三种方式触发任务调度; +- 10、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。 ### TODO LIST - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限; diff --git a/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/AdminBizTest.java b/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/AdminBizTest.java index 6402b8a0..6ccea517 100644 --- a/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/AdminBizTest.java +++ b/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/AdminBizTest.java @@ -9,7 +9,8 @@ import org.junit.Assert; import org.junit.Test; /** - * admin-api client, test + * admin api test + * * @author xuxueli 2017-07-28 22:14:52 */ 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 accessToken = null; + /** + * registry executor + * + * @throws Exception + */ @Test public void registryTest() throws Exception { AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject(); @@ -28,6 +34,11 @@ public class AdminBizTest { Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE); } + /** + * registry executor remove + * + * @throws Exception + */ @Test public void registryRemove() throws Exception { AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject(); @@ -38,6 +49,11 @@ public class AdminBizTest { Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE); } + /** + * trigger job for once + * + * @throws Exception + */ @Test public void triggerJob() throws Exception { AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();