Sfoglia il codice sorgente

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

xuxueli 7 anni fa
parent
commit
0361025d57

+ 29 - 3
doc/XXL-JOB官方文档.md Vedi File

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

+ 17 - 1
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/AdminBizTest.java Vedi File

@@ -9,7 +9,8 @@ import org.junit.Assert;
9 9
 import org.junit.Test;
10 10
 
11 11
 /**
12
- * admin-api client, test
12
+ * admin api test
13
+ *
13 14
  * @author xuxueli 2017-07-28 22:14:52
14 15
  */
15 16
 public class AdminBizTest {
@@ -18,6 +19,11 @@ public class AdminBizTest {
18 19
     private static String addressUrl = "http://127.0.0.1:8080/xxl-job-admin".concat(AdminBiz.MAPPING);
19 20
     private static String accessToken = null;
20 21
 
22
+    /**
23
+     * registry executor
24
+     *
25
+     * @throws Exception
26
+     */
21 27
     @Test
22 28
     public void registryTest() throws Exception {
23 29
         AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();
@@ -28,6 +34,11 @@ public class AdminBizTest {
28 34
         Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
29 35
     }
30 36
 
37
+    /**
38
+     * registry executor remove
39
+     *
40
+     * @throws Exception
41
+     */
31 42
     @Test
32 43
     public void registryRemove() throws Exception {
33 44
         AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();
@@ -38,6 +49,11 @@ public class AdminBizTest {
38 49
         Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
39 50
     }
40 51
 
52
+    /**
53
+     * trigger job for once
54
+     *
55
+     * @throws Exception
56
+     */
41 57
     @Test
42 58
     public void triggerJob() throws Exception {
43 59
         AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();