diff --git a/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue b/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue index c26aa3ad4..ced3c59a8 100644 --- a/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue +++ b/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue @@ -139,6 +139,8 @@ isEnabled: true, priority: JobPriority.Normal, jobType: JobType.Once, + maxCount: 0, + maxTryCount: 0, args: {}, } as BackgroundJobInfo); const [registerModal, { closeModal, changeOkLoading }] = useModalInner((model) => { @@ -282,6 +284,8 @@ isEnabled: true, priority: JobPriority.Normal, jobType: JobType.Once, + maxCount: 0, + maxTryCount: 0, args: {}, } as BackgroundJobInfo; }); diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs index 61d919b23..1b461f2e9 100644 --- a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs +++ b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs @@ -37,30 +37,36 @@ public class JobExecutedEvent : JobEventBase, ITransientDepend { job.TryCount += 1; job.IsAbandoned = false; - // 将任务标记为运行中, 会被轮询重新进入队列 - job.Status = JobStatus.FailedRetry; job.Result = GetExceptionMessage(context.EventData.Exception); - // 多次异常后需要重新计算优先级 - if (job.TryCount <= (job.MaxTryCount / 2) && - job.TryCount > (job.MaxTryCount / 3)) + // 周期性任务不用改变重试策略 + if (job.JobType != JobType.Period) { - job.Priority = JobPriority.BelowNormal; - } - else if (job.TryCount > (job.MaxTryCount / 1.5)) - { - job.Priority = JobPriority.Low; + // 将任务标记为运行中, 会被轮询重新进入队列 + job.Status = JobStatus.FailedRetry; + // 多次异常后需要重新计算优先级 + if (job.TryCount <= (job.MaxTryCount / 2) && + job.TryCount > (job.MaxTryCount / 3)) + { + job.Priority = JobPriority.BelowNormal; + } + else if (job.TryCount > (job.MaxTryCount / 1.5)) + { + job.Priority = JobPriority.Low; + } } - if (job.TryCount >= job.MaxTryCount) + // 当未设置最大重试次数时不会标记停止 + if (job.MaxTryCount > 0 && job.TryCount >= job.MaxTryCount) { job.Status = JobStatus.Stopped; job.IsAbandoned = true; job.NextRunTime = null; await RemoveJobAsync(context, job); - // 重试达到上限发布异常通知 - await NotifierAsync(context, job); } + + // 每次重试发布异常通知 + await NotifierAsync(context, job); } else {