diff --git a/oh-my-scheduler-common/pom.xml b/oh-my-scheduler-common/pom.xml
index f3a9cae9..361424dd 100644
--- a/oh-my-scheduler-common/pom.xml
+++ b/oh-my-scheduler-common/pom.xml
@@ -13,5 +13,17 @@
1.0.0-SNAPSHOT
jar
+
+ 1.7.30
+
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
\ No newline at end of file
diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/JobInstanceStatus.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/JobInstanceStatus.java
new file mode 100644
index 00000000..61d1f18d
--- /dev/null
+++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/JobInstanceStatus.java
@@ -0,0 +1,21 @@
+package com.github.kfcfans.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * description
+ *
+ * @author tjq
+ * @since 2020/3/17
+ */
+@Getter
+@AllArgsConstructor
+public enum JobInstanceStatus {
+ RUNNING(1, "运行中"),
+ SUCCEED(2, "运行成功"),
+ FAILED(3, "运行失败");
+
+ private int value;
+ private String des;
+}
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ServerScheduleJobReq.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java
similarity index 95%
rename from oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ServerScheduleJobReq.java
rename to oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java
index f9cf1652..812a3ab8 100644
--- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ServerScheduleJobReq.java
+++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java
@@ -1,4 +1,4 @@
-package com.github.kfcfans.oms.worker.pojo.request;
+package com.github.kfcfans.common.request;
import lombok.Data;
diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java
new file mode 100644
index 00000000..50ca11ae
--- /dev/null
+++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java
@@ -0,0 +1,26 @@
+package com.github.kfcfans.common.request;
+
+import lombok.Data;
+
+/**
+ * TaskTracker 将状态上报给服务器
+ *
+ * @author tjq
+ * @since 2020/3/17
+ */
+@Data
+public class TaskTrackerReportInstanceStatusReq {
+
+ private String jobId;
+ private String instanceId;
+
+ private int instanceStatus;
+
+ private String result;
+
+ /* ********* 统计信息 ********* */
+ private long totalTaskNum;
+ private long runningTaskNum;
+ private long succeedTaskNum;
+ private long failedTaskNum;
+}
diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/CommonUtils.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/CommonUtils.java
new file mode 100644
index 00000000..b174fffe
--- /dev/null
+++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/CommonUtils.java
@@ -0,0 +1,38 @@
+package com.github.kfcfans.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.function.Supplier;
+
+/**
+ * 公共工具类
+ *
+ * @author tjq
+ * @since 2020/3/18
+ */
+@Slf4j
+public class CommonUtils {
+
+ /**
+ * 重试执行,仅适用于失败抛出异常的方法
+ * @param executor 需要执行的方法
+ * @param retryTimes 重试的次数
+ * @param intervalMS 失败后下一次执行的间隔时间
+ * @return 函数成功执行后的返回值
+ * @throws Exception 执行失败,调用方自行处理
+ */
+ public static T executeWithRetry(Supplier executor, int retryTimes, long intervalMS) throws Exception {
+ if (retryTimes <= 1 || intervalMS <= 0) {
+ return executor.get();
+ }
+ for (int i = 1; i < retryTimes; i++) {
+ try {
+ return executor.get();
+ }catch (Exception e) {
+ log.warn("[CommonUtils] executeWithRetry failed, system will retry after {}ms.", intervalMS, e);
+ Thread.sleep(intervalMS);
+ }
+ }
+ return executor.get();
+ }
+}
diff --git a/oh-my-scheduler-worker/pom.xml b/oh-my-scheduler-worker/pom.xml
index adaf49cc..222b912e 100644
--- a/oh-my-scheduler-worker/pom.xml
+++ b/oh-my-scheduler-worker/pom.xml
@@ -16,11 +16,11 @@
5.2.4.RELEASE
2.6.4
- 1.7.30
1.0.0-SNAPSHOT
1.4.200
3.4.2
28.2-jre
+ 1.2.58
@@ -40,13 +40,6 @@
${akka.version}
-
-
- org.slf4j
- slf4j-api
- 1.7.30
-
-
com.github.kfcfans
@@ -74,6 +67,14 @@
${guava.version}
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
+
ch.qos.logback
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/JobTrackerActor.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/JobTrackerActor.java
index 7bd0cd50..534cf306 100644
--- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/JobTrackerActor.java
+++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/JobTrackerActor.java
@@ -1,7 +1,7 @@
package com.github.kfcfans.oms.worker.actors;
import akka.actor.AbstractActor;
-import com.github.kfcfans.oms.worker.pojo.request.ServerScheduleJobReq;
+import com.github.kfcfans.common.request.ServerScheduleJobReq;
import lombok.extern.slf4j.Slf4j;
/**
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/ThreadLocalStore.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/ThreadLocalStore.java
new file mode 100644
index 00000000..439e2086
--- /dev/null
+++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/ThreadLocalStore.java
@@ -0,0 +1,16 @@
+package com.github.kfcfans.oms.worker.common;
+
+import com.github.kfcfans.oms.worker.sdk.TaskContext;
+
+/**
+ * 存储一些不方便直接传递的东西
+ * #attention:警惕内存泄漏问题,最好在 ProcessorTracker destroy 时,执行 remove
+ *
+ * @author tjq
+ * @since 2020/3/18
+ */
+public class ThreadLocalStore {
+
+ public static final ThreadLocal TASK_CONTEXT_THREAD_LOCAL = new ThreadLocal<>();
+
+}
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/AkkaConstant.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/AkkaConstant.java
index b81ce7b5..c2caa1fb 100644
--- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/AkkaConstant.java
+++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/AkkaConstant.java
@@ -13,7 +13,7 @@ public class AkkaConstant {
*/
public static final String ACTOR_SYSTEM_NAME = "oms";
- public static final String JOB_TRACKER_ACTOR_NAME = "job_tracker";
+ public static final String Task_TRACKER_ACTOR_NAME = "task_tracker";
public static final String WORKER_ACTOR_NAME = "worker";
}
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/TaskStatus.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/TaskStatus.java
index e337f59b..23dbc984 100644
--- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/TaskStatus.java
+++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/common/constants/TaskStatus.java
@@ -15,7 +15,7 @@ public enum TaskStatus {
/* ******************* TaskTracker 专用 ******************* */
WAITING_DISPATCH(1, "等待调度器调度"),
- DISPATCH_SUCCESS(2, "调度成功(但不保证worker收到)"),
+ DISPATCH_SUCCESS_WORKER_UNCHECK(2, "调度成功(但不保证worker收到)"),
WORKER_PROCESSING(3, "worker开始执行"),
WORKER_PROCESS_SUCCESS(4, "worker执行成功"),
WORKER_PROCESS_FAILED(5, "worker执行失败"),
@@ -32,7 +32,7 @@ public enum TaskStatus {
public static TaskStatus of(int v) {
switch (v) {
case 1: return WAITING_DISPATCH;
- case 2: return DISPATCH_SUCCESS;
+ case 2: return DISPATCH_SUCCESS_WORKER_UNCHECK;
case 3: return WORKER_PROCESSING;
case 4: return WORKER_PROCESS_SUCCESS;
case 5: return WORKER_PROCESS_FAILED;
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/SimpleTaskQuery.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/SimpleTaskQuery.java
index f2ff4399..351a88f0 100644
--- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/SimpleTaskQuery.java
+++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/SimpleTaskQuery.java
@@ -22,11 +22,16 @@ public class SimpleTaskQuery {
private Integer status;
// 自定义的查询条件(where 后面的语句),如 crated_time > 10086 and status = 3
- private String conditionSQL;
+ private String queryCondition;
+ // 自定义的查询条件,如 GROUP BY status
+ private String otherCondition;
+
+ // 查询内容,默认为 *
+ private String queryContent = " * ";
private Integer limit;
- public String getConditionSQL() {
+ public String getQueryCondition() {
StringBuilder sb = new StringBuilder();
if (!StringUtils.isEmpty(taskId)) {
sb.append("task_id = '").append(taskId).append("'").append(LINK);
@@ -47,8 +52,8 @@ public class SimpleTaskQuery {
sb.append("status = ").append(status).append(LINK);
}
- if (!StringUtils.isEmpty(conditionSQL)) {
- sb.append(conditionSQL).append(LINK);
+ if (!StringUtils.isEmpty(queryCondition)) {
+ sb.append(queryCondition).append(LINK);
}
String substring = sb.substring(0, sb.length() - LINK.length());
diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskDAO.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskDAO.java
index f140d22c..7d178dc6 100644
--- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskDAO.java
+++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskDAO.java
@@ -2,6 +2,7 @@ package com.github.kfcfans.oms.worker.persistence;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
/**
* 任务持久化接口
@@ -31,6 +32,8 @@ public interface TaskDAO {
List simpleQuery(SimpleTaskQuery query);
+ List