feat:(1.3.0-beta1): 定时任务告警优化

This commit is contained in:
wodeyangzipingpingwuqi 2024-12-30 15:00:21 +08:00
parent ef11025fee
commit 289e24de99
9 changed files with 41 additions and 20 deletions

View File

@ -1,5 +1,6 @@
package com.aizuda.snailjob.common.core.enums; package com.aizuda.snailjob.common.core.enums;
import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@ -14,6 +15,7 @@ import lombok.Getter;
public enum JobNotifySceneEnum { public enum JobNotifySceneEnum {
/********************************Job****************************************/ /********************************Job****************************************/
NONE(0, StrUtil.EMPTY, NodeTypeEnum.SERVER),
JOB_TASK_ERROR(1, "JOB任务执行失败", NodeTypeEnum.SERVER), JOB_TASK_ERROR(1, "JOB任务执行失败", NodeTypeEnum.SERVER),
JOB_CLIENT_ERROR(2, "客户端执行失败", NodeTypeEnum.CLIENT), JOB_CLIENT_ERROR(2, "客户端执行失败", NodeTypeEnum.CLIENT),
JOB_NO_CLIENT_NODES_ERROR(3, "没有可执行的客户端节点", NodeTypeEnum.SERVER), JOB_NO_CLIENT_NODES_ERROR(3, "没有可执行的客户端节点", NodeTypeEnum.SERVER),
@ -50,8 +52,22 @@ public enum JobNotifySceneEnum {
} }
} }
return null; return NONE;
} }
/**
* 获取通知场景描述
*
* @param notifyScene
* @return
*/
public static JobNotifySceneEnum getJobNotifyScene(Integer notifyScene) {
for (JobNotifySceneEnum sceneEnum : JobNotifySceneEnum.values()) {
if (sceneEnum.getNotifyScene() == notifyScene) {
return sceneEnum;
}
}
return NONE;
}
} }

View File

@ -6,7 +6,6 @@ import lombok.Getter;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 标识某个操作的具体原因 * 标识某个操作的具体原因
@ -48,10 +47,14 @@ public enum JobOperationReasonEnum {
WORKFLOW_NODE_NO_REQUIRED.getReason(), WORKFLOW_DECISION_FAILED.getReason(), WORKFLOW_NODE_NO_REQUIRED.getReason(), WORKFLOW_DECISION_FAILED.getReason(),
WORKFLOW_CONDITION_NODE_EXECUTION_ERROR.getReason()); WORKFLOW_CONDITION_NODE_EXECUTION_ERROR.getReason());
public static JobOperationReasonEnum getByReason(Integer reason) { public static JobOperationReasonEnum getWorkflowNotifyScene(Integer notifyScene) {
if (Objects.isNull(reason)) { for (JobOperationReasonEnum sceneEnum : JobOperationReasonEnum.values()) {
return NONE; if (sceneEnum.getReason() == notifyScene) {
return sceneEnum;
}
} }
return Arrays.stream(values()).filter(e -> reason.equals(e.reason)).findFirst().orElse(NONE);
return NONE;
} }
} }

View File

@ -4,9 +4,6 @@ import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
/** /**
* 通知场景枚举 * 通知场景枚举
* *
@ -38,7 +35,7 @@ public enum RetryNotifySceneEnum {
/** /**
* 通知场景 * 通知场景
*/ */
private final Integer notifyScene; private final int notifyScene;
/** /**
* 描述 * 描述
@ -67,11 +64,14 @@ public enum RetryNotifySceneEnum {
return null; return null;
} }
public static RetryNotifySceneEnum getByDesc(Integer notifyScene) { public static RetryNotifySceneEnum getRetryNotifyScene(Integer notifyScene) {
if (Objects.isNull(notifyScene)) { for (RetryNotifySceneEnum sceneEnum : RetryNotifySceneEnum.values()) {
return NONE; if (sceneEnum.getNotifyScene() == notifyScene) {
return sceneEnum;
}
} }
return Arrays.stream(values()).filter(e -> notifyScene.equals(e.getNotifyScene())).findFirst().orElse(NONE);
return NONE;
} }
} }

View File

@ -47,6 +47,7 @@ public abstract class AbstractJobAlarm<E extends ApplicationEvent> extends Abstr
JobAlarmInfo jobAlarmInfo = AlarmInfoConverter.INSTANCE.toJobAlarmInfo(jobBatchResponseDO); JobAlarmInfo jobAlarmInfo = AlarmInfoConverter.INSTANCE.toJobAlarmInfo(jobBatchResponseDO);
JobAlarmInfo alarmInfo = jobAlarmInfoGroupMap.get(jobBatchResponseDO.getId()); JobAlarmInfo alarmInfo = jobAlarmInfoGroupMap.get(jobBatchResponseDO.getId());
jobAlarmInfo.setReason(alarmInfo.getReason()); jobAlarmInfo.setReason(alarmInfo.getReason());
jobAlarmInfo.setNotifyScene(alarmInfo.getNotifyScene());
List<JobAlarmInfo> jobAlarmInfos = jobAlarmInfoMap.getOrDefault(jobNotifyId, Lists.newArrayList()); List<JobAlarmInfo> jobAlarmInfos = jobAlarmInfoMap.getOrDefault(jobNotifyId, Lists.newArrayList());
jobAlarmInfos.add(jobAlarmInfo); jobAlarmInfos.add(jobAlarmInfo);

View File

@ -46,6 +46,7 @@ public abstract class AbstractWorkflowAlarm<E extends ApplicationEvent> extends
WorkflowAlarmInfo workflowAlarmInfo = AlarmInfoConverter.INSTANCE.toWorkflowAlarmInfo(workflowBatchResponseDO); WorkflowAlarmInfo workflowAlarmInfo = AlarmInfoConverter.INSTANCE.toWorkflowAlarmInfo(workflowBatchResponseDO);
WorkflowAlarmInfo alarmInfo = workflowAlarmInfoGroupMap.get(workflowAlarmInfo.getId()); WorkflowAlarmInfo alarmInfo = workflowAlarmInfoGroupMap.get(workflowAlarmInfo.getId());
workflowAlarmInfo.setReason(alarmInfo.getReason()); workflowAlarmInfo.setReason(alarmInfo.getReason());
workflowAlarmInfo.setNotifyScene(alarmInfo.getNotifyScene());
List<WorkflowAlarmInfo> workflowAlarmInfos = workflowAlarmInfoMap.getOrDefault(workflowNotifyId, Lists.newArrayList()); List<WorkflowAlarmInfo> workflowAlarmInfos = workflowAlarmInfoMap.getOrDefault(workflowNotifyId, Lists.newArrayList());
workflowAlarmInfos.add(workflowAlarmInfo); workflowAlarmInfos.add(workflowAlarmInfo);

View File

@ -2,7 +2,6 @@ package com.aizuda.snailjob.server.job.task.support.alarm.listener;
import com.aizuda.snailjob.common.core.alarm.AlarmContext; import com.aizuda.snailjob.common.core.alarm.AlarmContext;
import com.aizuda.snailjob.common.core.enums.JobNotifySceneEnum; import com.aizuda.snailjob.common.core.enums.JobNotifySceneEnum;
import com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum;
import com.aizuda.snailjob.common.core.util.EnvironmentUtils; import com.aizuda.snailjob.common.core.util.EnvironmentUtils;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.aizuda.snailjob.server.common.alarm.AbstractJobAlarm; import com.aizuda.snailjob.server.common.alarm.AbstractJobAlarm;
@ -81,7 +80,7 @@ public class JobTaskFailAlarmListener extends AbstractJobAlarm<JobTaskFailAlarmE
alarmDTO.getGroupName(), alarmDTO.getGroupName(),
alarmDTO.getJobName(), alarmDTO.getJobName(),
alarmDTO.getExecutorInfo(), alarmDTO.getExecutorInfo(),
JobOperationReasonEnum.getByReason(alarmDTO.getOperationReason()).getDesc(), JobNotifySceneEnum.getJobNotifyScene(alarmDTO.getNotifyScene()).getDesc(),
alarmDTO.getReason(), alarmDTO.getReason(),
alarmDTO.getArgsStr(), alarmDTO.getArgsStr(),
DateUtils.toNowFormat(DateUtils.NORM_DATETIME_PATTERN)) DateUtils.toNowFormat(DateUtils.NORM_DATETIME_PATTERN))

View File

@ -74,7 +74,7 @@ public class WorkflowTaskFailAlarmListener extends AbstractWorkflowAlarm<Workflo
alarmDTO.getNamespaceId(), alarmDTO.getNamespaceId(),
alarmDTO.getGroupName(), alarmDTO.getGroupName(),
alarmDTO.getWorkflowName(), alarmDTO.getWorkflowName(),
JobOperationReasonEnum.getByReason(alarmDTO.getOperationReason()).getDesc(), JobOperationReasonEnum.getWorkflowNotifyScene(alarmDTO.getOperationReason()).getDesc(),
alarmDTO.getReason(), alarmDTO.getReason(),
DateUtils.toNowFormat(DateUtils.NORM_DATETIME_PATTERN)) DateUtils.toNowFormat(DateUtils.NORM_DATETIME_PATTERN))
.title("{}环境 Workflow任务执行失败", EnvironmentUtils.getActiveProfile()); .title("{}环境 Workflow任务执行失败", EnvironmentUtils.getActiveProfile());

View File

@ -69,13 +69,14 @@ public class JobTimeoutCheckTask implements TimerTask<String> {
stopJobContext.setWorkflowTaskBatchId(jobTaskBatch.getWorkflowTaskBatchId()); stopJobContext.setWorkflowTaskBatchId(jobTaskBatch.getWorkflowTaskBatchId());
instanceInterrupt.stop(stopJobContext); instanceInterrupt.stop(stopJobContext);
String reason = "超时中断.taskBatchId:[" + taskBatchId + "]";
SnailSpringContext.getContext().publishEvent( SnailSpringContext.getContext().publishEvent(
new JobTaskFailAlarmEvent(JobTaskFailAlarmEventDTO.builder() new JobTaskFailAlarmEvent(JobTaskFailAlarmEventDTO.builder()
.jobTaskBatchId(taskBatchId) .jobTaskBatchId(taskBatchId)
.reason("超时中断.taskBatchId:[" + taskBatchId + "]") .reason(reason)
.notifyScene(JobNotifySceneEnum.JOB_TASK_ERROR.getNotifyScene()) .notifyScene(JobNotifySceneEnum.JOB_TASK_ERROR.getNotifyScene())
.build())); .build()));
SnailJobLog.LOCAL.info("超时中断.taskBatchId:[{}]", taskBatchId); SnailJobLog.LOCAL.info(reason);
} }
@Override @Override

View File

@ -89,7 +89,7 @@ public class RetryTaskFailAlarmListener extends
return AlarmContext.build().text(retryTaskDeadTextMessagesFormatter, return AlarmContext.build().text(retryTaskDeadTextMessagesFormatter,
EnvironmentUtils.getActiveProfile(), EnvironmentUtils.getActiveProfile(),
notifyConfig.getNotifyThreshold(), notifyConfig.getNotifyThreshold(),
RetryNotifySceneEnum.getByDesc(retryAlarmInfo.getNotifyScene()).getDesc(), RetryNotifySceneEnum.getRetryNotifyScene(retryAlarmInfo.getNotifyScene()).getDesc(),
retryAlarmInfo.getNamespaceId(), retryAlarmInfo.getNamespaceId(),
retryAlarmInfo.getGroupName(), retryAlarmInfo.getGroupName(),
retryAlarmInfo.getExecutorName(), retryAlarmInfo.getExecutorName(),