diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskExecutorDTO.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskExecutorDTO.java index 5ad331dd..65c92c1d 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskExecutorDTO.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskExecutorDTO.java @@ -1,12 +1,11 @@ package com.aizuda.snailjob.server.retry.task.dto; -import com.aizuda.snailjob.template.datasource.persistence.po.CreateUpdateDt; import lombok.Data; import java.time.LocalDateTime; @Data -public class RetryTaskExecutorDTO extends CreateUpdateDt { +public class RetryTaskExecutorDTO { private Long id; @@ -40,4 +39,8 @@ public class RetryTaskExecutorDTO extends CreateUpdateDt { private String reason; + private LocalDateTime updateDt; + + private LocalDateTime createDt; + } diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskFailAlarmEventDTO.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskFailAlarmEventDTO.java index 733048dc..dba12de0 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskFailAlarmEventDTO.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/RetryTaskFailAlarmEventDTO.java @@ -1,6 +1,5 @@ package com.aizuda.snailjob.server.retry.task.dto; -import com.aizuda.snailjob.template.datasource.persistence.po.CreateUpdateDt; import lombok.Data; import java.time.LocalDateTime; @@ -11,7 +10,7 @@ import java.time.LocalDateTime; * @date 2024/12/23 */ @Data -public class RetryTaskFailAlarmEventDTO extends CreateUpdateDt { +public class RetryTaskFailAlarmEventDTO { private Long id; diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/result/FailureActor.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/result/FailureActor.java index 06e4d06c..47e3dc44 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/result/FailureActor.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/result/FailureActor.java @@ -57,6 +57,7 @@ public class FailureActor extends AbstractActor { return receiveBuilder().match(RetryTaskExecutorDTO.class, retryTaskExecutorDTO -> { SnailJobLog.LOCAL.debug("FailureActor params:[{}]", retryTaskExecutorDTO); + // 这里先这样后面重构统一调整 RetryTask retryTask = RetryTaskConverter.INSTANCE.toRetryTask(retryTaskExecutorDTO); try { // 超过最大等级 diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/retry/RetryExecutor.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/retry/RetryExecutor.java index be2f8582..bd19a514 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/retry/RetryExecutor.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/retry/RetryExecutor.java @@ -2,6 +2,7 @@ package com.aizuda.snailjob.server.retry.task.support.retry; import akka.actor.ActorRef; import cn.hutool.core.lang.Pair; +import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.client.model.DispatchRetryResultDTO; import com.aizuda.snailjob.common.core.enums.RetryNotifySceneEnum; import com.aizuda.snailjob.common.core.model.Result; @@ -18,6 +19,7 @@ import com.aizuda.snailjob.server.retry.task.support.StopStrategy; import lombok.extern.slf4j.Slf4j; import java.util.List; +import java.util.Objects; import java.util.concurrent.Callable; /** @@ -98,10 +100,29 @@ public class RetryExecutor { actorRef = ActorGenerator.failureActor(); } + // 获取失败原因 + String reason = StrUtil.EMPTY; + if (retryContext.hasException()) { + Exception exception = retryContext.getException(); + if (Objects.nonNull(exception)) { + reason = exception.getCause().getMessage(); + } + + } else { + if (Objects.nonNull(call)) { + Result result = (Result) call; + DispatchRetryResultDTO data = result.getData(); + if (StrUtil.isBlank(result.getMessage()) && Objects.nonNull(data)) { + reason = data.getExceptionMsg(); + } else { + reason = result.getMessage(); + } + } + } + RetryTaskExecutorDTO retryTaskExecutorDTO = RetryTaskConverter.INSTANCE.toRetryTaskExecutorDTO( - retryContext.getRetryTask(), - retryContext.hasException() ? retryContext.getException().getCause().getMessage() : ((DispatchRetryResultDTO) ((Result) call).getData()).getExceptionMsg(), + retryContext.getRetryTask(), reason, RetryNotifySceneEnum.RETRY_TASK_FAIL_ERROR.getNotifyScene()); actorRef.tell(retryTaskExecutorDTO, actorRef);