feat:2.4.0
1. 优化客户端执行器
This commit is contained in:
parent
69e0fe0a48
commit
f3a2addfc5
@ -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.executor.AnnotationJobExecutor;
|
||||||
import com.aizuda.easy.retry.client.job.core.dto.JobContext;
|
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.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.request.DispatchJobRequest;
|
||||||
import com.aizuda.easy.retry.client.model.StopJobDTO;
|
import com.aizuda.easy.retry.client.model.StopJobDTO;
|
||||||
import com.aizuda.easy.retry.common.core.context.SpringContext;
|
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 com.aizuda.easy.retry.common.core.model.Result;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -33,6 +36,27 @@ public class JobEndPoint {
|
|||||||
@PostMapping("/dispatch/v1")
|
@PostMapping("/dispatch/v1")
|
||||||
public Result<Boolean> dispatchJob(@RequestBody @Validated DispatchJobRequest dispatchJob) {
|
public Result<Boolean> 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 jobContext = new JobContext();
|
||||||
jobContext.setJobId(dispatchJob.getJobId());
|
jobContext.setJobId(dispatchJob.getJobId());
|
||||||
jobContext.setTaskId(dispatchJob.getTaskId());
|
jobContext.setTaskId(dispatchJob.getTaskId());
|
||||||
@ -42,17 +66,8 @@ public class JobEndPoint {
|
|||||||
jobContext.setParallelNum(dispatchJob.getParallelNum());
|
jobContext.setParallelNum(dispatchJob.getParallelNum());
|
||||||
jobContext.setTaskType(dispatchJob.getTaskType());
|
jobContext.setTaskType(dispatchJob.getTaskType());
|
||||||
jobContext.setExecutorTimeout(dispatchJob.getExecutorTimeout());
|
jobContext.setExecutorTimeout(dispatchJob.getExecutorTimeout());
|
||||||
|
jobContext.setArgsStr(dispatchJob.getArgsStr());
|
||||||
JobExecutorInfo jobExecutorInfo = JobExecutorInfoCache.get(jobContext.getExecutorInfo());
|
return jobContext;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/stop/v1")
|
@PostMapping("/stop/v1")
|
||||||
|
@ -10,5 +10,7 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class JobArgs {
|
public class JobArgs {
|
||||||
|
|
||||||
|
private String argsStr;
|
||||||
|
|
||||||
private String executorInfo;
|
private String executorInfo;
|
||||||
}
|
}
|
||||||
|
@ -31,4 +31,6 @@ public class JobContext {
|
|||||||
private Integer shardingIndex;
|
private Integer shardingIndex;
|
||||||
|
|
||||||
private Integer executorTimeout;
|
private Integer executorTimeout;
|
||||||
|
|
||||||
|
private String argsStr;
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,4 @@ public class JobExecutorInfo {
|
|||||||
|
|
||||||
private Object executor;
|
private Object executor;
|
||||||
|
|
||||||
private boolean isAnnotation;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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.cache.ThreadPoolCache;
|
||||||
import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
|
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.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.StopTaskTimerTask;
|
||||||
import com.aizuda.easy.retry.client.job.core.timer.TimerManager;
|
import com.aizuda.easy.retry.client.job.core.timer.TimerManager;
|
||||||
import com.aizuda.easy.retry.client.model.ExecuteResult;
|
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.Futures;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
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);
|
TimerManager.add(new StopTaskTimerTask(jobContext.getTaskBatchId()), jobContext.getExecutorTimeout(), TimeUnit.SECONDS);
|
||||||
|
|
||||||
// 执行任务
|
// 执行任务
|
||||||
ListenableFuture<ExecuteResult> submit = decorator.submit(() -> doJobExecute(jobContext));
|
ListenableFuture<ExecuteResult> 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);
|
FutureCache.addFuture(jobContext.getTaskBatchId(), jobContext.getTaskId(), submit);
|
||||||
Futures.addCallback(submit, new JobExecutorFutureCallback(jobContext), decorator);
|
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);
|
protected abstract ExecuteResult doJobExecute(JobArgs jobArgs);
|
||||||
|
@ -43,16 +43,25 @@ public class JobExecutorFutureCallback implements FutureCallback<ExecuteResult>
|
|||||||
taskStatus = JobTaskStatusEnum.SUCCESS.getStatus();
|
taskStatus = JobTaskStatusEnum.SUCCESS.getStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
CLIENT.dispatchResult(buildDispatchJobResultRequest(result, taskStatus));
|
CLIENT.dispatchResult(buildDispatchJobResultRequest(result, taskStatus));
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("执行结果上报异常.[{}]", jobContext.getTaskId(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(final Throwable t) {
|
public void onFailure(final Throwable t) {
|
||||||
// 上报执行失败
|
// 上报执行失败
|
||||||
log.error("任务执行失败 jobTask:[{}]", jobContext.getTaskId(), t);
|
log.error("任务执行失败 jobTask:[{}]", jobContext.getTaskId(), t);
|
||||||
|
try {
|
||||||
CLIENT.dispatchResult(
|
CLIENT.dispatchResult(
|
||||||
buildDispatchJobResultRequest(ExecuteResult.failure(t.getMessage()), JobTaskStatusEnum.FAIL.getStatus())
|
buildDispatchJobResultRequest(ExecuteResult.failure(t.getMessage()), JobTaskStatusEnum.FAIL.getStatus())
|
||||||
);
|
);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("执行结果上报异常.[{}]", jobContext.getTaskId(), e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DispatchJobResultRequest buildDispatchJobResultRequest(ExecuteResult executeResult, int status) {
|
private DispatchJobResultRequest buildDispatchJobResultRequest(ExecuteResult executeResult, int status) {
|
||||||
|
@ -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.Scanner;
|
||||||
import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor;
|
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.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.JobContext;
|
||||||
import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo;
|
import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo;
|
||||||
import com.aizuda.easy.retry.common.core.log.LogUtils;
|
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 (bean.getClass().isAssignableFrom(IJobExecutor.class)) {
|
||||||
if (!JobExecutorInfoCache.isExisted(executorClassName)) {
|
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 =
|
JobExecutorInfo jobExecutorInfo =
|
||||||
new JobExecutorInfo(
|
new JobExecutorInfo(
|
||||||
executorName,
|
executorName,
|
||||||
ReflectionUtils.findMethod(bean.getClass(), jobExecutor.method(), JobContext.class),
|
ReflectionUtils.findMethod(bean.getClass(), jobExecutor.method(), JobArgs.class),
|
||||||
bean, true
|
bean
|
||||||
);
|
);
|
||||||
retryerInfoList.add(jobExecutorInfo);
|
retryerInfoList.add(jobExecutorInfo);
|
||||||
}
|
}
|
||||||
@ -96,7 +97,7 @@ public class JobExecutorScanner implements Scanner, ApplicationContextAware {
|
|||||||
new JobExecutorInfo(
|
new JobExecutorInfo(
|
||||||
jobExecutor.name(),
|
jobExecutor.name(),
|
||||||
executeMethod,
|
executeMethod,
|
||||||
bean,true
|
bean
|
||||||
);
|
);
|
||||||
retryerInfoList.add(jobExecutorInfo);
|
retryerInfoList.add(jobExecutorInfo);
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,8 @@ public class DispatchJobRequest {
|
|||||||
@NotBlank(message = "executorInfo 不能为空")
|
@NotBlank(message = "executorInfo 不能为空")
|
||||||
private String executorInfo;
|
private String executorInfo;
|
||||||
|
|
||||||
|
private String argsStr;
|
||||||
|
|
||||||
private Integer shardingTotal;
|
private Integer shardingTotal;
|
||||||
|
|
||||||
private Integer shardingIndex;
|
private Integer shardingIndex;
|
||||||
|
@ -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.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@ -26,6 +26,6 @@ public enum TaskTypeEnum {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new EasyRetryServerException("未知类型");
|
throw new EasyRetryCommonException("未知类型");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support;
|
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;
|
import com.aizuda.easy.retry.server.job.task.support.callback.ClientCallbackContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support;
|
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;
|
import com.aizuda.easy.retry.server.job.task.support.executor.JobExecutorContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,6 +62,8 @@ public interface JobTaskConverter {
|
|||||||
|
|
||||||
ClientCallbackContext toClientCallbackContext(DispatchJobResultRequest request);
|
ClientCallbackContext toClientCallbackContext(DispatchJobResultRequest request);
|
||||||
|
|
||||||
|
ClientCallbackContext toClientCallbackContext(RealJobExecutorDTO request);
|
||||||
|
|
||||||
DispatchJobRequest toDispatchJobRequest(RealJobExecutorDTO realJobExecutorDTO);
|
DispatchJobRequest toDispatchJobRequest(RealJobExecutorDTO realJobExecutorDTO);
|
||||||
|
|
||||||
@Mappings({
|
@Mappings({
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support;
|
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;
|
import com.aizuda.easy.retry.server.job.task.support.stop.TaskStopJobContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,7 +4,7 @@ import akka.actor.ActorRef;
|
|||||||
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
|
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.support.JobTaskConverter;
|
||||||
import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support.callback;
|
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 com.aizuda.easy.retry.server.job.task.support.ClientCallbackHandler;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
@ -4,7 +4,7 @@ import akka.actor.ActorRef;
|
|||||||
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
|
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.support.JobTaskConverter;
|
||||||
import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import akka.actor.ActorRef;
|
|||||||
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
|
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.support.JobTaskConverter;
|
||||||
import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -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.common.util.ClientInfoUtils;
|
||||||
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
|
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.dto.RealJobExecutorDTO;
|
||||||
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.Job;
|
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -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.common.util.ClientInfoUtils;
|
||||||
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
|
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.dto.RealJobExecutorDTO;
|
||||||
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.Job;
|
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support.executor;
|
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 com.aizuda.easy.retry.server.job.task.support.JobExecutor;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
@ -2,6 +2,7 @@ package com.aizuda.easy.retry.server.job.task.support.executor;
|
|||||||
|
|
||||||
import akka.actor.AbstractActor;
|
import akka.actor.AbstractActor;
|
||||||
import akka.actor.ActorRef;
|
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.client.model.request.DispatchJobRequest;
|
||||||
import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum;
|
import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum;
|
||||||
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
|
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.cache.CacheRegisterTable;
|
||||||
import com.aizuda.easy.retry.server.common.client.RequestBuilder;
|
import com.aizuda.easy.retry.server.common.client.RequestBuilder;
|
||||||
import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo;
|
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.support.JobTaskConverter;
|
||||||
import com.aizuda.easy.retry.server.job.task.client.JobRpcClient;
|
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.JobExecutorResultDTO;
|
||||||
import com.aizuda.easy.retry.server.job.task.dto.JobLogDTO;
|
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.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.mapper.JobTaskMapper;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import com.github.rholder.retry.Attempt;
|
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(),
|
if (dispatch.getStatus() == StatusEnum.YES.getStatus() && Objects.equals(dispatch.getData(),
|
||||||
Boolean.TRUE)) {
|
Boolean.TRUE)) {
|
||||||
jobLogDTO.setMessage("任务调度成功");
|
jobLogDTO.setMessage("任务调度成功");
|
||||||
} else {
|
|
||||||
jobLogDTO.setMessage(dispatch.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
ActorRef actorRef = ActorGenerator.jobLogActor();
|
ActorRef actorRef = ActorGenerator.jobLogActor();
|
||||||
actorRef.tell(jobLogDTO, actorRef);
|
actorRef.tell(jobLogDTO, actorRef);
|
||||||
|
} else {
|
||||||
|
// 客户端返回失败,则认为任务执行失败
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("调用客户端失败.", e);
|
log.error("调用客户端失败.", e);
|
||||||
Throwable throwable = e;
|
Throwable throwable = e;
|
||||||
|
@ -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.common.util.ClientInfoUtils;
|
||||||
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
|
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.dto.RealJobExecutorDTO;
|
||||||
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.Job;
|
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -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.exception.EasyRetryServerException;
|
||||||
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
|
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.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.JobMapper;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
|
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
|
@ -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.handler.ClientNodeAllocateHandler;
|
||||||
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
|
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.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.JobMapper;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
|
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support.generator.task;
|
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 com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support.generator.task;
|
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;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@ -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.handler.ClientNodeAllocateHandler;
|
||||||
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
|
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.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.mapper.JobTaskMapper;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
|
@ -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.common.util.ClientInfoUtils;
|
||||||
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
|
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.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 com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -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.common.util.ClientInfoUtils;
|
||||||
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
|
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.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 com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.aizuda.easy.retry.server.job.task.support.stop;
|
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 com.aizuda.easy.retry.server.job.task.support.JobTaskStopHandler;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
@ -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.common.util.ClientInfoUtils;
|
||||||
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
|
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.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 com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -186,6 +186,9 @@ export default {
|
|||||||
],
|
],
|
||||||
// 加载数据方法 必须为 Promise 对象
|
// 加载数据方法 必须为 Promise 对象
|
||||||
loadData: (parameter) => {
|
loadData: (parameter) => {
|
||||||
|
if (this.queryParam.taskBatchId === null || this.queryParam.taskBatchId === undefined) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
return jobTaskList(Object.assign(parameter, this.queryParam)).then((res) => {
|
return jobTaskList(Object.assign(parameter, this.queryParam)).then((res) => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user