From 04bd145e09671b3287b35b79a348c276fa65e9c2 Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Mon, 13 Jan 2025 22:19:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(1.3.0-beta2):=20=E4=BF=AE=E5=A4=8Dhttps://?= =?UTF-8?q?gitee.com/aizuda/snail-job/issues/IBHA4U?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retry/task/dto/RetryTaskExecutorDTO.java | 7 ++++-- .../task/dto/RetryTaskFailAlarmEventDTO.java | 3 +-- .../dispatch/actor/result/FailureActor.java | 1 + .../task/support/retry/RetryExecutor.java | 25 +++++++++++++++++-- 4 files changed, 30 insertions(+), 6 deletions(-) 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 5ad331dd3..65c92c1d8 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 733048dca..dba12de06 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 06e4d06c2..47e3dc44e 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 be2f85825..bd19a5143 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);