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 6a244ba8..34d789dd 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 @@ -1,5 +1,6 @@ package com.xxl.job.admin.core.jobbean; +import com.xxl.job.admin.core.enums.ExecutorFailStrategyEnum; import com.xxl.job.admin.core.model.XxlJobGroup; import com.xxl.job.admin.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobLog; @@ -70,6 +71,15 @@ public class RemoteHttpJobBean extends QuartzJobBean { // do trigger ReturnT triggerResult = doTrigger(triggerParam, jobInfo, jobLog); + // fail retry + if (triggerResult.getCode()==ReturnT.FAIL_CODE && + ExecutorFailStrategyEnum.match(jobInfo.getExecutorFailStrategy(), null) == ExecutorFailStrategyEnum.FAIL_RETRY) { + ReturnT retryTriggerResult = doTrigger(triggerParam, jobInfo, jobLog); + + triggerResult.setCode(retryTriggerResult.getCode()); + triggerResult.setMsg(triggerResult.getMsg() + "

>>>>>>>>>>>失败重试<<<<<<<<<<<

" +retryTriggerResult.getMsg()); + } + // log part-2 jobLog.setTriggerCode(triggerResult.getCode()); jobLog.setTriggerMsg(triggerResult.getMsg()); @@ -97,7 +107,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { } triggerSb.append("
地址列表:").append(addressList!=null?addressList.toString():""); if (CollectionUtils.isEmpty(addressList)) { - triggerSb.append("
调度失败:").append("执行器地址为空"); + triggerSb.append("
----------------------
").append("调度失败:").append("执行器地址为空"); return new ReturnT(ReturnT.FAIL_CODE, triggerSb.toString()); } @@ -107,7 +117,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { jobLog.setExecutorAddress(address); ReturnT runResult = runExecutor(triggerParam, address); - triggerSb.append("
").append(runResult.getMsg()); + triggerSb.append("
----------------------
").append(runResult.getMsg()); return new ReturnT(runResult.getCode(), triggerSb.toString()); } else { @@ -115,7 +125,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null); triggerSb.append("
路由策略:").append(executorRouteStrategyEnum!=null?(executorRouteStrategyEnum.name() + "-" + executorRouteStrategyEnum.getTitle()):null); if (executorRouteStrategyEnum == null) { - triggerSb.append("
调度失败:").append("执行器路由策略为空"); + triggerSb.append("
----------------------
").append("调度失败:").append("执行器路由策略为空"); return new ReturnT(ReturnT.FAIL_CODE, triggerSb.toString()); } @@ -126,20 +136,20 @@ public class RemoteHttpJobBean extends QuartzJobBean { // run ReturnT runResult = runExecutor(triggerParam, address); - triggerSb.append("
").append(runResult.getMsg()); + triggerSb.append("
----------------------
").append(runResult.getMsg()); return new ReturnT(runResult.getCode(), triggerSb.toString()); } else { for (String address : addressList) { // beat ReturnT beatResult = beatExecutor(address); - triggerSb.append("
").append(beatResult.getMsg()); + triggerSb.append("
----------------------
").append(beatResult.getMsg()); if (beatResult.getCode() == ReturnT.SUCCESS_CODE) { jobLog.setExecutorAddress(address); ReturnT runResult = runExecutor(triggerParam, address); - triggerSb.append("
").append(runResult.getMsg()); + triggerSb.append("
----------------------
").append(runResult.getMsg()); return new ReturnT(runResult.getCode(), triggerSb.toString()); }