From 6748f99fab3675a185b268df2f4f4052bc247790 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Mon, 16 May 2022 09:34:50 +0800 Subject: [PATCH] Make the default job of the new tenant persistent --- .../LINGYUN/Abp/BackgroundTasks/IJobStore.cs | 2 ++ .../Abp/BackgroundTasks/Internal/InMemoryJobStore.cs | 9 +++++++++ .../LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs | 8 ++++++++ .../EventBus/Handlers/TenantSynchronizer.cs | 10 ++++++---- 4 files changed, 25 insertions(+), 4 deletions(-) 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",