diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java index d2ecc94f..dd5f650d 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java @@ -7,9 +7,12 @@ import com.aizuda.easy.retry.client.job.core.executor.AbstractJobExecutor; import com.aizuda.easy.retry.client.job.core.executor.AnnotationJobExecutor; import com.aizuda.easy.retry.client.job.core.dto.JobContext; import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; +import com.aizuda.easy.retry.client.job.core.executor.JobExecutorFutureCallback; +import com.aizuda.easy.retry.client.model.ExecuteResult; import com.aizuda.easy.retry.client.model.request.DispatchJobRequest; import com.aizuda.easy.retry.client.model.StopJobDTO; import com.aizuda.easy.retry.common.core.context.SpringContext; +import com.aizuda.easy.retry.common.core.enums.StatusEnum; import com.aizuda.easy.retry.common.core.model.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -33,6 +36,27 @@ public class JobEndPoint { @PostMapping("/dispatch/v1") public Result dispatchJob(@RequestBody @Validated DispatchJobRequest dispatchJob) { + JobContext jobContext = buildJobContext(dispatchJob); + JobExecutorInfo jobExecutorInfo = JobExecutorInfoCache.get(jobContext.getExecutorInfo()); + if (Objects.isNull(jobExecutorInfo)) { + return new Result<>(Boolean.FALSE); + } + + // 选择执行器 + Object executor = jobExecutorInfo.getExecutor(); + IJobExecutor jobExecutor; + if (executor.getClass().isAssignableFrom(IJobExecutor.class)) { + jobExecutor = (AbstractJobExecutor) executor; + } else { + jobExecutor = SpringContext.getBeanByType(AnnotationJobExecutor.class); + } + + jobExecutor.jobExecute(jobContext); + + return new Result<>(Boolean.TRUE); + } + + private static JobContext buildJobContext(DispatchJobRequest dispatchJob) { JobContext jobContext = new JobContext(); jobContext.setJobId(dispatchJob.getJobId()); jobContext.setTaskId(dispatchJob.getTaskId()); @@ -42,17 +66,8 @@ public class JobEndPoint { jobContext.setParallelNum(dispatchJob.getParallelNum()); jobContext.setTaskType(dispatchJob.getTaskType()); jobContext.setExecutorTimeout(dispatchJob.getExecutorTimeout()); - - JobExecutorInfo jobExecutorInfo = JobExecutorInfoCache.get(jobContext.getExecutorInfo()); - if (jobExecutorInfo.isAnnotation()) { - IJobExecutor iJobExecutor = SpringContext.getBeanByType(AnnotationJobExecutor.class); - iJobExecutor.jobExecute(jobContext); - } else { - AbstractJobExecutor normalJobExecutor = (AbstractJobExecutor) jobExecutorInfo.getExecutor(); - normalJobExecutor.jobExecute(jobContext); - } - - return new Result<>(Boolean.TRUE); + jobContext.setArgsStr(dispatchJob.getArgsStr()); + return jobContext; } @PostMapping("/stop/v1") diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobArgs.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobArgs.java index 221616d9..3648b671 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobArgs.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobArgs.java @@ -10,5 +10,7 @@ import lombok.Data; @Data public class JobArgs { + private String argsStr; + private String executorInfo; } diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java index 4b3ca135..93e27c47 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java @@ -31,4 +31,6 @@ public class JobContext { private Integer shardingIndex; private Integer executorTimeout; + + private String argsStr; } diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java index 058b5a11..db002cf1 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java @@ -20,6 +20,4 @@ public class JobExecutorInfo { private Object executor; - private boolean isAnnotation; - } diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/AbstractJobExecutor.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/AbstractJobExecutor.java index 8661e51b..efb58fd5 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/AbstractJobExecutor.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/AbstractJobExecutor.java @@ -5,9 +5,11 @@ import com.aizuda.easy.retry.client.job.core.cache.FutureCache; import com.aizuda.easy.retry.client.job.core.cache.ThreadPoolCache; import com.aizuda.easy.retry.client.job.core.dto.JobArgs; import com.aizuda.easy.retry.client.job.core.dto.JobContext; +import com.aizuda.easy.retry.client.job.core.dto.ShardingJobArgs; import com.aizuda.easy.retry.client.job.core.timer.StopTaskTimerTask; import com.aizuda.easy.retry.client.job.core.timer.TimerManager; import com.aizuda.easy.retry.client.model.ExecuteResult; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; @@ -37,11 +39,35 @@ public abstract class AbstractJobExecutor implements IJobExecutor { TimerManager.add(new StopTaskTimerTask(jobContext.getTaskBatchId()), jobContext.getExecutorTimeout(), TimeUnit.SECONDS); // 执行任务 - ListenableFuture submit = decorator.submit(() -> doJobExecute(jobContext)); + ListenableFuture submit = decorator.submit(() -> { + JobArgs jobArgs; + if (jobContext.getTaskType() == TaskTypeEnum.SHARDING.getType()) { + jobArgs = buildShardingJobArgs(jobContext); + } else { + jobArgs = buildJobArgs(jobContext); + } + + return doJobExecute(jobArgs); + }); FutureCache.addFuture(jobContext.getTaskBatchId(), jobContext.getTaskId(), submit); Futures.addCallback(submit, new JobExecutorFutureCallback(jobContext), decorator); + } + private static JobArgs buildJobArgs(JobContext jobContext) { + JobArgs jobArgs = new JobArgs(); + jobArgs.setArgsStr(jobContext.getArgsStr()); + jobArgs.setExecutorInfo(jobContext.getExecutorInfo()); + return jobArgs; + } + + private static JobArgs buildShardingJobArgs(JobContext jobContext) { + ShardingJobArgs jobArgs = new ShardingJobArgs(); + jobArgs.setArgsStr(jobContext.getArgsStr()); + jobArgs.setExecutorInfo(jobContext.getExecutorInfo()); + jobArgs.setShardingIndex(jobContext.getShardingIndex()); + jobArgs.setShardingTotal(jobContext.getShardingTotal()); + return jobArgs; } protected abstract ExecuteResult doJobExecute(JobArgs jobArgs); diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/JobExecutorFutureCallback.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/JobExecutorFutureCallback.java index 2fd83e85..c04fafa4 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/JobExecutorFutureCallback.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/executor/JobExecutorFutureCallback.java @@ -43,16 +43,25 @@ public class JobExecutorFutureCallback implements FutureCallback taskStatus = JobTaskStatusEnum.SUCCESS.getStatus(); } - CLIENT.dispatchResult(buildDispatchJobResultRequest(result, taskStatus)); + try { + CLIENT.dispatchResult(buildDispatchJobResultRequest(result, taskStatus)); + } catch (Exception e) { + log.error("执行结果上报异常.[{}]", jobContext.getTaskId(), e); + } } @Override public void onFailure(final Throwable t) { // 上报执行失败 log.error("任务执行失败 jobTask:[{}]", jobContext.getTaskId(), t); - CLIENT.dispatchResult( - buildDispatchJobResultRequest(ExecuteResult.failure(t.getMessage()), JobTaskStatusEnum.FAIL.getStatus()) - ); + try { + CLIENT.dispatchResult( + buildDispatchJobResultRequest(ExecuteResult.failure(t.getMessage()), JobTaskStatusEnum.FAIL.getStatus()) + ); + } catch (Exception e) { + log.error("执行结果上报异常.[{}]", jobContext.getTaskId(), e); + } + } private DispatchJobResultRequest buildDispatchJobResultRequest(ExecuteResult executeResult, int status) { diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java index 953afbe6..59e7db51 100644 --- a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java @@ -4,6 +4,7 @@ import com.aizuda.easy.retry.client.job.core.IJobExecutor; import com.aizuda.easy.retry.client.job.core.Scanner; import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; import com.aizuda.easy.retry.client.job.core.cache.JobExecutorInfoCache; +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; import com.aizuda.easy.retry.client.job.core.dto.JobContext; import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; import com.aizuda.easy.retry.common.core.log.LogUtils; @@ -59,7 +60,7 @@ public class JobExecutorScanner implements Scanner, ApplicationContextAware { // 通过实现接口进行注册 if (bean.getClass().isAssignableFrom(IJobExecutor.class)) { if (!JobExecutorInfoCache.isExisted(executorClassName)) { - retryerInfoList.add(new JobExecutorInfo(executorClassName, ReflectionUtils.findMethod(bean.getClass(), "jobExecute"), bean, false)); + retryerInfoList.add(new JobExecutorInfo(executorClassName, ReflectionUtils.findMethod(bean.getClass(), "jobExecute"), bean)); } } @@ -72,8 +73,8 @@ public class JobExecutorScanner implements Scanner, ApplicationContextAware { JobExecutorInfo jobExecutorInfo = new JobExecutorInfo( executorName, - ReflectionUtils.findMethod(bean.getClass(), jobExecutor.method(), JobContext.class), - bean, true + ReflectionUtils.findMethod(bean.getClass(), jobExecutor.method(), JobArgs.class), + bean ); retryerInfoList.add(jobExecutorInfo); } @@ -96,7 +97,7 @@ public class JobExecutorScanner implements Scanner, ApplicationContextAware { new JobExecutorInfo( jobExecutor.name(), executeMethod, - bean,true + bean ); retryerInfoList.add(jobExecutorInfo); } diff --git a/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/request/DispatchJobRequest.java b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/request/DispatchJobRequest.java index aff3a966..12d43358 100644 --- a/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/request/DispatchJobRequest.java +++ b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/request/DispatchJobRequest.java @@ -36,6 +36,8 @@ public class DispatchJobRequest { @NotBlank(message = "executorInfo 不能为空") private String executorInfo; + private String argsStr; + private Integer shardingTotal; private Integer shardingIndex; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskTypeEnum.java b/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/TaskTypeEnum.java similarity index 71% rename from easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskTypeEnum.java rename to easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/TaskTypeEnum.java index f36681db..23b20317 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskTypeEnum.java +++ b/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/TaskTypeEnum.java @@ -1,6 +1,6 @@ -package com.aizuda.easy.retry.server.job.task.enums; +package com.aizuda.easy.retry.common.core.enums; -import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; +import com.aizuda.easy.retry.common.core.exception.EasyRetryCommonException; import lombok.AllArgsConstructor; import lombok.Getter; @@ -26,6 +26,6 @@ public enum TaskTypeEnum { } } - throw new EasyRetryServerException("未知类型"); + throw new EasyRetryCommonException("未知类型"); } } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/ClientCallbackHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/ClientCallbackHandler.java index a2638a25..7b7251c9 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/ClientCallbackHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/ClientCallbackHandler.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.server.job.task.support.callback.ClientCallbackContext; /** diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobExecutor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobExecutor.java index a34ac69e..71a1560b 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobExecutor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobExecutor.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.server.job.task.support.executor.JobExecutorContext; /** diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskConverter.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskConverter.java index 8ecd7f82..dabcedaf 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskConverter.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskConverter.java @@ -62,6 +62,8 @@ public interface JobTaskConverter { ClientCallbackContext toClientCallbackContext(DispatchJobResultRequest request); + ClientCallbackContext toClientCallbackContext(RealJobExecutorDTO request); + DispatchJobRequest toDispatchJobRequest(RealJobExecutorDTO realJobExecutorDTO); @Mappings({ diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskStopHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskStopHandler.java index 29328b14..83c03c26 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskStopHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/JobTaskStopHandler.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.server.job.task.support.stop.TaskStopJobContext; /** diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/BroadcastClientCallbackHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/BroadcastClientCallbackHandler.java index 0e7855c9..ef922280 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/BroadcastClientCallbackHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/BroadcastClientCallbackHandler.java @@ -4,7 +4,7 @@ import akka.actor.ActorRef; import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClientCallbackFactory.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClientCallbackFactory.java index b371b322..806f7c4e 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClientCallbackFactory.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClientCallbackFactory.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support.callback; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.server.job.task.support.ClientCallbackHandler; import java.util.concurrent.ConcurrentHashMap; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClusterClientCallbackHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClusterClientCallbackHandler.java index 081c6a4a..d1411cc9 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClusterClientCallbackHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ClusterClientCallbackHandler.java @@ -4,7 +4,7 @@ import akka.actor.ActorRef; import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ShardingClientCallbackHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ShardingClientCallbackHandler.java index 4b014dbd..e2f7af63 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ShardingClientCallbackHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/callback/ShardingClientCallbackHandler.java @@ -4,7 +4,7 @@ import akka.actor.ActorRef; import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/BroadcastTaskJobExecutor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/BroadcastTaskJobExecutor.java index e3b61bad..609e2f07 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/BroadcastTaskJobExecutor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/BroadcastTaskJobExecutor.java @@ -5,8 +5,7 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; -import com.aizuda.easy.retry.template.datasource.persistence.po.Job; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ClusterJobExecutor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ClusterJobExecutor.java index 9f22bc96..431907f6 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ClusterJobExecutor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ClusterJobExecutor.java @@ -5,8 +5,7 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; -import com.aizuda.easy.retry.template.datasource.persistence.po.Job; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/JobExecutorFactory.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/JobExecutorFactory.java index 01de3942..7100f30a 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/JobExecutorFactory.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/JobExecutorFactory.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support.executor; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.server.job.task.support.JobExecutor; import java.util.concurrent.ConcurrentHashMap; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/RealJobExecutorActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/RealJobExecutorActor.java index 234e76d4..eed60e8b 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/RealJobExecutorActor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/RealJobExecutorActor.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.server.job.task.support.executor; import akka.actor.AbstractActor; import akka.actor.ActorRef; +import com.aizuda.easy.retry.client.model.ExecuteResult; import com.aizuda.easy.retry.client.model.request.DispatchJobRequest; import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum; import com.aizuda.easy.retry.common.core.enums.StatusEnum; @@ -11,11 +12,14 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.cache.CacheRegisterTable; import com.aizuda.easy.retry.server.common.client.RequestBuilder; import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo; +import com.aizuda.easy.retry.server.job.task.support.ClientCallbackHandler; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.client.JobRpcClient; import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO; import com.aizuda.easy.retry.server.job.task.dto.JobLogDTO; import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO; +import com.aizuda.easy.retry.server.job.task.support.callback.ClientCallbackContext; +import com.aizuda.easy.retry.server.job.task.support.callback.ClientCallbackFactory; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import com.github.rholder.retry.Attempt; @@ -72,12 +76,17 @@ public class RealJobExecutorActor extends AbstractActor { if (dispatch.getStatus() == StatusEnum.YES.getStatus() && Objects.equals(dispatch.getData(), Boolean.TRUE)) { jobLogDTO.setMessage("任务调度成功"); + ActorRef actorRef = ActorGenerator.jobLogActor(); + actorRef.tell(jobLogDTO, actorRef); } else { - jobLogDTO.setMessage(dispatch.getMessage()); + // 客户端返回失败,则认为任务执行失败 + ClientCallbackHandler clientCallback = ClientCallbackFactory.getClientCallback(realJobExecutorDTO.getTaskType()); + ClientCallbackContext context = JobTaskConverter.INSTANCE.toClientCallbackContext(realJobExecutorDTO); + context.setTaskStatus(JobTaskStatusEnum.FAIL.getStatus()); + context.setExecuteResult(ExecuteResult.failure(null, dispatch.getMessage())); + clientCallback.callback(context); } - ActorRef actorRef = ActorGenerator.jobLogActor(); - actorRef.tell(jobLogDTO, actorRef); } catch (Exception e) { log.error("调用客户端失败.", e); Throwable throwable = e; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ShardingJobExecutor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ShardingJobExecutor.java index 1e3adf04..ec16f43d 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ShardingJobExecutor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/ShardingJobExecutor.java @@ -5,8 +5,7 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; -import com.aizuda.easy.retry.template.datasource.persistence.po.Job; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/BroadcastTaskGenerator.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/BroadcastTaskGenerator.java index 86c03d44..ab028efb 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/BroadcastTaskGenerator.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/BroadcastTaskGenerator.java @@ -8,7 +8,7 @@ import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobMapper; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ClusterTaskGenerator.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ClusterTaskGenerator.java index 76099903..08696387 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ClusterTaskGenerator.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ClusterTaskGenerator.java @@ -8,7 +8,7 @@ import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.common.handler.ClientNodeAllocateHandler; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobMapper; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGenerator.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGenerator.java index dd2f053e..a265d131 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGenerator.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGenerator.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support.generator.task; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import java.util.List; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGeneratorFactory.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGeneratorFactory.java index 152cbe36..b5012a04 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGeneratorFactory.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/JobTaskGeneratorFactory.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support.generator.task; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import java.util.concurrent.ConcurrentHashMap; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ShardingTaskGenerator.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ShardingTaskGenerator.java index 13095c00..da17c49a 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ShardingTaskGenerator.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/task/ShardingTaskGenerator.java @@ -9,7 +9,7 @@ import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.common.handler.ClientNodeAllocateHandler; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import com.google.common.base.Splitter; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/BroadcastTaskStopHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/BroadcastTaskStopHandler.java index 665cb4be..7645cb84 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/BroadcastTaskStopHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/BroadcastTaskStopHandler.java @@ -5,7 +5,7 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.RealStopTaskInstanceDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ClusterTaskStopHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ClusterTaskStopHandler.java index 800c1b26..b579f6ff 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ClusterTaskStopHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ClusterTaskStopHandler.java @@ -5,7 +5,7 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.RealStopTaskInstanceDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/JobTaskStopFactory.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/JobTaskStopFactory.java index 7bedda2e..39045a42 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/JobTaskStopFactory.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/JobTaskStopFactory.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.job.task.support.stop; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.server.job.task.support.JobTaskStopHandler; import java.util.concurrent.ConcurrentHashMap; diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ShardingTaskStopHandler.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ShardingTaskStopHandler.java index 928544f1..9bc56a8d 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ShardingTaskStopHandler.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/ShardingTaskStopHandler.java @@ -5,7 +5,7 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator; import com.aizuda.easy.retry.server.common.util.ClientInfoUtils; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; import com.aizuda.easy.retry.server.job.task.dto.RealStopTaskInstanceDTO; -import com.aizuda.easy.retry.server.job.task.enums.TaskTypeEnum; +import com.aizuda.easy.retry.common.core.enums.TaskTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/frontend/src/views/job/JobTaskList.vue b/frontend/src/views/job/JobTaskList.vue index 9bc298cf..7e46ea34 100644 --- a/frontend/src/views/job/JobTaskList.vue +++ b/frontend/src/views/job/JobTaskList.vue @@ -186,6 +186,9 @@ export default { ], // 加载数据方法 必须为 Promise 对象 loadData: (parameter) => { + if (this.queryParam.taskBatchId === null || this.queryParam.taskBatchId === undefined) { + return [] + } return jobTaskList(Object.assign(parameter, this.queryParam)).then((res) => { return res })