This commit is contained in:
opensnail 2025-01-13 22:19:29 +08:00
parent 821e7fb659
commit 04bd145e09
4 changed files with 30 additions and 6 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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 {
// 超过最大等级

View File

@ -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<V> {
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<DispatchRetryResultDTO> result = (Result<DispatchRetryResultDTO>) 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);