From 21b1bf9d2669a4db1161f18945caec3db6991b7c Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Tue, 27 Jun 2017 22:52:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E7=AD=96=E7=95=A5=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=87=8D=E6=9E=84=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/core/jobbean/RemoteHttpJobBean.java | 101 ++---------------- .../core/route/ExecutorRouteStrategyEnum.java | 4 +- .../job/admin/core/route/ExecutorRouter.java | 57 ++++++---- .../route/strategy/ExecutorRouteBusyover.java | 54 ++++++++++ .../strategy/ExecutorRouteConsistentHash.java | 58 ++++++---- .../route/strategy/ExecutorRouteFailover.java | 54 ++++++++++ .../route/strategy/ExecutorRouteFirst.java | 17 ++- .../core/route/strategy/ExecutorRouteLFU.java | 18 +++- .../core/route/strategy/ExecutorRouteLRU.java | 19 +++- .../route/strategy/ExecutorRouteLast.java | 16 ++- .../route/strategy/ExecutorRouteRandom.java | 17 ++- .../route/strategy/ExecutorRouteRound.java | 21 +++- 12 files changed, 290 insertions(+), 146 deletions(-) create mode 100644 xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java create mode 100644 xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java 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; + + } }