diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/IJobStore.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/IJobStore.cs index 880fd52bf..f4037dc45 100644 --- a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/IJobStore.cs +++ b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/IJobStore.cs @@ -20,6 +20,8 @@ public interface IJobStore Task StoreLogAsync(JobEventData eventData); + Task RemoveAsync(string jobId); + Task CleanupAsync( int maxResultCount, TimeSpan jobExpiratime, diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/InMemoryJobStore.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/InMemoryJobStore.cs index 604d6ad4d..125012105 100644 --- a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/InMemoryJobStore.cs +++ b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/InMemoryJobStore.cs @@ -74,6 +74,15 @@ internal class InMemoryJobStore : IJobStore, ISingletonDependency return Task.CompletedTask; } + public async Task RemoveAsync(string jobId) + { + var job = await FindAsync(jobId); + if (job != null) + { + _memoryJobStore.Remove(job); + } + } + public Task StoreLogAsync(JobEventData eventData) { return Task.CompletedTask; diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs index 59a8cfbcf..2bcc98f46 100644 --- a/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs +++ b/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs @@ -122,6 +122,14 @@ public class BackgroundJobStore : IJobStore, ITransientDependency } } + public async virtual Task RemoveAsync(string jobId) + { + using var unitOfWork = UnitOfWorkManager.Begin(); + await JobInfoRepository.DeleteAsync(jobId); + + await unitOfWork.SaveChangesAsync(); + } + public async virtual Task StoreLogAsync(JobEventData eventData) { using var unitOfWork = UnitOfWorkManager.Begin(); diff --git a/aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs b/aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs index 08abf463c..a59768ca4 100644 --- a/aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs +++ b/aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs @@ -54,12 +54,12 @@ namespace LY.MicroService.TaskManagement.EventBus.Handlers { // 租户删除时移除轮询作业 var pollingJob = BuildPollingJobInfo(eventData.Entity.Id, eventData.Entity.Name); - await JobStore.StoreAsync(pollingJob); await JobScheduler.RemoveAsync(pollingJob); + await JobStore.RemoveAsync(pollingJob.Id); var cleaningJob = BuildCleaningJobInfo(eventData.Entity.Id, eventData.Entity.Name); - await JobStore.StoreAsync(cleaningJob); await JobScheduler.RemoveAsync(cleaningJob); + await JobStore.RemoveAsync(cleaningJob.Id); } public async Task HandleEventAsync(CreateEventData eventData) @@ -73,9 +73,11 @@ namespace LY.MicroService.TaskManagement.EventBus.Handlers private async Task QueueBackgroundJobAsync(CreateEventData eventData) { var pollingJob = BuildPollingJobInfo(eventData.Id, eventData.Name); + await JobStore.StoreAsync(pollingJob); await JobScheduler.QueueAsync(pollingJob); var cleaningJob = BuildCleaningJobInfo(eventData.Id, eventData.Name); + await JobStore.StoreAsync(cleaningJob); await JobScheduler.QueueAsync(cleaningJob); } @@ -105,7 +107,7 @@ namespace LY.MicroService.TaskManagement.EventBus.Handlers { return new JobInfo { - Id = tenantId.ToString(), + Id = tenantId.ToString() + "_Polling", Name = nameof(BackgroundPollingJob), Group = "Polling", Description = "Polling tasks to be executed", @@ -127,7 +129,7 @@ namespace LY.MicroService.TaskManagement.EventBus.Handlers { return new JobInfo { - Id = tenantId.ToString(), + Id = tenantId.ToString() + "_Cleaning", Name = nameof(BackgroundCleaningJob), Group = "Cleaning", Description = "Cleaning tasks to be executed",