diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
index 13be274f..40ea8127 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
@@ -8,12 +8,10 @@ import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
import com.xxl.job.admin.core.thread.JobFailMonitorHelper;
import com.xxl.job.admin.core.thread.JobRegistryMonitorHelper;
-import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerParam;
import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
import com.xxl.job.core.enums.RegistryConfig;
-import com.xxl.job.core.rpc.netcom.NetComClientProxy;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.quartz.JobExecutionContext;
@@ -23,7 +21,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
/**
* http job bean
@@ -122,99 +122,12 @@ public class RemoteHttpJobBean extends QuartzJobBean {
}
triggerSb.append("
路由策略:").append(executorRouteStrategyEnum.name() + "-" + executorRouteStrategyEnum.getTitle());
- // trigger remote executor
- if (executorRouteStrategyEnum == ExecutorRouteStrategyEnum.FAILOVER) {
- for (String address : addressList) {
- // beat
- ReturnT beatResult = null;
- try {
- ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject();
- beatResult = executorBiz.beat();
- } catch (Exception e) {
- logger.error("", e);
- beatResult = new ReturnT(ReturnT.FAIL_CODE, ""+e );
- }
- triggerSb.append("
----------------------
")
- .append("心跳检测:")
- .append("
address:").append(address)
- .append("
code:").append(beatResult.getCode())
- .append("
msg:").append(beatResult.getMsg());
-
- // beat success
- if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
- jobLog.setExecutorAddress(address);
-
- ReturnT runResult = runExecutor(triggerParam, address);
- triggerSb.append("
----------------------
").append(runResult.getMsg());
-
- return new ReturnT(runResult.getCode(), triggerSb.toString());
- }
- }
- return new ReturnT(ReturnT.FAIL_CODE, triggerSb.toString());
- } else if (executorRouteStrategyEnum == ExecutorRouteStrategyEnum.BUSYOVER) {
- for (String address : addressList) {
- // beat
- ReturnT idleBeatResult = null;
- try {
- ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject();
- idleBeatResult = executorBiz.idleBeat(triggerParam.getJobId());
- } catch (Exception e) {
- logger.error("", e);
- idleBeatResult = new ReturnT(ReturnT.FAIL_CODE, ""+e );
- }
- triggerSb.append("
----------------------
")
- .append("空闲检测:")
- .append("
address:").append(address)
- .append("
code:").append(idleBeatResult.getCode())
- .append("
msg:").append(idleBeatResult.getMsg());
-
- // beat success
- if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
- jobLog.setExecutorAddress(address);
-
- ReturnT runResult = runExecutor(triggerParam, address);
- triggerSb.append("
----------------------
").append(runResult.getMsg());
-
- return new ReturnT(runResult.getCode(), triggerSb.toString());
- }
- }
- return new ReturnT(ReturnT.FAIL_CODE, triggerSb.toString());
- } else {
- // get address
- String address = executorRouteStrategyEnum.getRouter().route(jobInfo.getId(), addressList);
- jobLog.setExecutorAddress(address);
-
- // run
- ReturnT runResult = runExecutor(triggerParam, address);
- triggerSb.append("
----------------------
").append(runResult.getMsg());
-
- return new ReturnT(runResult.getCode(), triggerSb.toString());
- }
- }
-
- /**
- * run executor
- * @param triggerParam
- * @param address
- * @return
- */
- public ReturnT runExecutor(TriggerParam triggerParam, String address){
- ReturnT runResult = null;
- try {
- ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject();
- runResult = executorBiz.run(triggerParam);
- } catch (Exception e) {
- logger.error("", e);
- runResult = new ReturnT(ReturnT.FAIL_CODE, ""+e );
- }
- StringBuffer sb = new StringBuffer("触发调度:");
- sb.append("
address:").append(address);
- sb.append("
code:").append(runResult.getCode());
- sb.append("
msg:").append(runResult.getMsg());
- runResult.setMsg(sb.toString());
+ // route run / trigger remote executor
+ ReturnT routeRunResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList, jobLog);
+ triggerSb.append("
----------------------
").append(routeRunResult.getMsg());
+ return new ReturnT(routeRunResult.getCode(), triggerSb.toString());
- return runResult;
}
}
\ No newline at end of file
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
index 2efea6a0..0778cdc2 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
@@ -14,8 +14,8 @@ public enum ExecutorRouteStrategyEnum {
CONSISTENT_HASH("一致性HASH", new ExecutorRouteConsistentHash()),
LEAST_FREQUENTLY_USED("最不经常使用", new ExecutorRouteLFU()),
LEAST_RECENTLY_USED("最近最久未使用", new ExecutorRouteLRU()),
- FAILOVER("故障转移", null),
- BUSYOVER("忙碌转移", null);
+ FAILOVER("故障转移", new ExecutorRouteFailover()),
+ BUSYOVER("忙碌转移", new ExecutorRouteBusyover());
ExecutorRouteStrategyEnum(String title, ExecutorRouter router) {
this.title = title;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
index bf884ba8..aec1179a 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
@@ -1,34 +1,53 @@
package com.xxl.job.admin.core.route;
-import org.apache.commons.collections.CollectionUtils;
+import com.xxl.job.admin.core.model.XxlJobLog;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.rpc.netcom.NetComClientProxy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.ArrayList;
-import java.util.Arrays;
/**
* Created by xuxueli on 17/3/10.
*/
public abstract class ExecutorRouter {
-
- public abstract String route(int jobId, ArrayList addressList);
-
- public static String route(int jobId, ArrayList addressList, String executorRouteStrategy){
- if (CollectionUtils.isEmpty(addressList)) {
- return null;
+ protected static Logger logger = LoggerFactory.getLogger(ExecutorRouter.class);
+
+ /**
+ * route run
+ *
+ * @param triggerParam
+ * @param addressList
+ * @return
+ */
+ public abstract ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog);
+
+ /**
+ * run executor
+ * @param triggerParam
+ * @param address
+ * @return
+ */
+ protected static ReturnT runExecutor(TriggerParam triggerParam, String address){
+ ReturnT runResult = null;
+ try {
+ ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject();
+ runResult = executorBiz.run(triggerParam);
+ } catch (Exception e) {
+ logger.error("", e);
+ runResult = new ReturnT(ReturnT.FAIL_CODE, ""+e );
}
- ExecutorRouteStrategyEnum strategy = ExecutorRouteStrategyEnum.match(executorRouteStrategy, ExecutorRouteStrategyEnum.FIRST);
- String routeAddress = strategy.getRouter().route(jobId, addressList);
- return routeAddress;
- }
- public static void main(String[] args) {
-
-
- for (int i = 0; i < 100; i++) {
- String ret = ExecutorRouter.route(666, new ArrayList(Arrays.asList("127.0.0.1:0000", "127.0.0.1:2222", "127.0.0.1:3333")), ExecutorRouteStrategyEnum.LEAST_FREQUENTLY_USED.name());
- System.out.println(ret);
- }
+ StringBuffer runResultSB = new StringBuffer("触发调度:");
+ runResultSB.append("
address:").append(address);
+ runResultSB.append("
code:").append(runResult.getCode());
+ runResultSB.append("
msg:").append(runResult.getMsg());
+ runResult.setMsg(runResultSB.toString());
+ return runResult;
}
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
new file mode 100644
index 00000000..7a8dfc04
--- /dev/null
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
@@ -0,0 +1,54 @@
+package com.xxl.job.admin.core.route.strategy;
+
+import com.xxl.job.admin.core.model.XxlJobLog;
+import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.rpc.netcom.NetComClientProxy;
+
+import java.util.ArrayList;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteBusyover extends ExecutorRouter {
+
+ public String route(int jobId, ArrayList addressList) {
+ return addressList.get(0);
+ }
+
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+
+ StringBuffer idleBeatResultSB = new StringBuffer();
+ for (String address : addressList) {
+ // beat
+ ReturnT idleBeatResult = null;
+ try {
+ ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject();
+ idleBeatResult = executorBiz.idleBeat(triggerParam.getJobId());
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ idleBeatResult = new ReturnT(ReturnT.FAIL_CODE, ""+e );
+ }
+ idleBeatResultSB.append("
----------------------
")
+ .append("空闲检测:")
+ .append("
address:").append(address)
+ .append("
code:").append(idleBeatResult.getCode())
+ .append("
msg:").append(idleBeatResult.getMsg());
+
+ // beat success
+ if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
+ jobLog.setExecutorAddress(address);
+
+ ReturnT runResult = runExecutor(triggerParam, address);
+ idleBeatResultSB.append("
----------------------
").append(runResult.getMsg());
+
+ return new ReturnT(runResult.getCode(), idleBeatResultSB.toString());
+ }
+ }
+
+ return new ReturnT(ReturnT.FAIL_CODE, idleBeatResultSB.toString());
+ }
+}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
index 82706959..9cb5cac6 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
@@ -19,29 +22,6 @@ public class ExecutorRouteConsistentHash extends ExecutorRouter {
private static int VIRTUAL_NODE_NUM = 5;
- @Override
- public String route(int jobId, ArrayList addressList) {
-
- // ------A1------A2-------A3------
- // -----------J1------------------
- TreeMap addressRing = new TreeMap();
- for (String address: addressList) {
- for (int i = 0; i < VIRTUAL_NODE_NUM; i++) {
- long addressHash = hash("SHARD-" + address + "-NODE-" + i);
- addressRing.put(addressHash, address);
- }
- }
-
- long jobHash = hash(String.valueOf(jobId));
- SortedMap lastRing = addressRing.tailMap(jobHash);
- if (!lastRing.isEmpty()) {
- return lastRing.get(lastRing.firstKey());
- }
- return addressRing.firstEntry().getValue();
- }
-
-
-
/**
* get hash code on 2^32 ring (md5散列的方式计算hash值)
* @param key
@@ -77,4 +57,36 @@ public class ExecutorRouteConsistentHash extends ExecutorRouter {
return truncateHashCode;
}
+ public String route(int jobId, ArrayList addressList) {
+
+ // ------A1------A2-------A3------
+ // -----------J1------------------
+ TreeMap addressRing = new TreeMap();
+ for (String address: addressList) {
+ for (int i = 0; i < VIRTUAL_NODE_NUM; i++) {
+ long addressHash = hash("SHARD-" + address + "-NODE-" + i);
+ addressRing.put(addressHash, address);
+ }
+ }
+
+ long jobHash = hash(String.valueOf(jobId));
+ SortedMap lastRing = addressRing.tailMap(jobHash);
+ if (!lastRing.isEmpty()) {
+ return lastRing.get(lastRing.firstKey());
+ }
+ return addressRing.firstEntry().getValue();
+ }
+
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+ }
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
new file mode 100644
index 00000000..c70e460f
--- /dev/null
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
@@ -0,0 +1,54 @@
+package com.xxl.job.admin.core.route.strategy;
+
+import com.xxl.job.admin.core.model.XxlJobLog;
+import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.rpc.netcom.NetComClientProxy;
+
+import java.util.ArrayList;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteFailover extends ExecutorRouter {
+
+ public String route(int jobId, ArrayList addressList) {
+ return addressList.get(0);
+ }
+
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+
+ StringBuffer beatResultSB = new StringBuffer();
+ for (String address : addressList) {
+ // beat
+ ReturnT beatResult = null;
+ try {
+ ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, address).getObject();
+ beatResult = executorBiz.beat();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ beatResult = new ReturnT(ReturnT.FAIL_CODE, ""+e );
+ }
+ beatResultSB.append("
----------------------
")
+ .append("心跳检测:")
+ .append("
address:").append(address)
+ .append("
code:").append(beatResult.getCode())
+ .append("
msg:").append(beatResult.getMsg());
+
+ // beat success
+ if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
+ jobLog.setExecutorAddress(address);
+
+ ReturnT runResult = runExecutor(triggerParam, address);
+ beatResultSB.append("
----------------------
").append(runResult.getMsg());
+
+ return new ReturnT(runResult.getCode(), beatResultSB.toString());
+ }
+ }
+ return new ReturnT(ReturnT.FAIL_CODE, beatResultSB.toString());
+
+ }
+}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
index bbcd5dad..3c185957 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.util.ArrayList;
@@ -9,9 +12,21 @@ import java.util.ArrayList;
*/
public class ExecutorRouteFirst extends ExecutorRouter {
- @Override
public String route(int jobId, ArrayList addressList) {
return addressList.get(0);
}
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+ }
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
index b24d1eed..e2403efd 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -17,7 +20,6 @@ public class ExecutorRouteLFU extends ExecutorRouter {
private static ConcurrentHashMap> jobLfuMap = new ConcurrentHashMap>();
private static long CACHE_VALID_TIME = 0;
- @Override
public String route(int jobId, ArrayList addressList) {
// cache clear
@@ -54,4 +56,18 @@ public class ExecutorRouteLFU extends ExecutorRouter {
return addressItem.getKey();
}
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+ }
+
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
index 3214d20d..ef55227f 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@@ -18,7 +21,6 @@ public class ExecutorRouteLRU extends ExecutorRouter {
private static ConcurrentHashMap> jobLRUMap = new ConcurrentHashMap>();
private static long CACHE_VALID_TIME = 0;
- @Override
public String route(int jobId, ArrayList addressList) {
// cache clear
@@ -52,4 +54,19 @@ public class ExecutorRouteLRU extends ExecutorRouter {
return eldestValue;
}
+
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+ }
+
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
index 1600e61a..fe863cc3 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.util.ArrayList;
@@ -9,9 +12,20 @@ import java.util.ArrayList;
*/
public class ExecutorRouteLast extends ExecutorRouter {
- @Override
public String route(int jobId, ArrayList addressList) {
return addressList.get(addressList.size()-1);
}
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+ }
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
index 88e031e5..c05a1750 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.util.ArrayList;
import java.util.Random;
@@ -12,10 +15,22 @@ public class ExecutorRouteRandom extends ExecutorRouter {
private static Random localRandom = new Random();
- @Override
public String route(int jobId, ArrayList addressList) {
// Collections.shuffle(addressList);
return addressList.get(localRandom.nextInt(addressList.size()));
}
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+ }
+
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
index edcded65..726b8906 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
@@ -1,6 +1,9 @@
package com.xxl.job.admin.core.route.strategy;
+import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
import java.util.ArrayList;
import java.util.Random;
@@ -27,12 +30,24 @@ public class ExecutorRouteRound extends ExecutorRouter {
return count;
}
- @Override
public String route(int jobId, ArrayList addressList) {
+ return addressList.get(count(jobId)%addressList.size());
+ }
+ @Override
+ public ReturnT routeRun(TriggerParam triggerParam, ArrayList addressList, XxlJobLog jobLog) {
- return addressList.get(count(jobId)%addressList.size());
- }
+ // address
+ String address = route(triggerParam.getJobId(), addressList);
+ jobLog.setExecutorAddress(address);
+
+ // run executor
+ ReturnT runResult = runExecutor(triggerParam, address);
+ runResult.setMsg("
----------------------
" + runResult.getMsg());
+
+ return runResult;
+
+ }
}