From 5d74d97566a0ae4850f4f720af69bbe9310a836f Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 20 Mar 2026 20:01:07 +0800 Subject: [PATCH] Fix whitespace issues and update job handler registration in background job management --- .../BackgroundJobConfiguration.cs | 2 +- .../BackgroundJobs/BackgroundJobExecuter.cs | 2 +- .../DefaultDynamicBackgroundJobManager.cs | 9 ++-- .../Abp/BackgroundJobs/JobExecutionContext.cs | 2 +- .../Hangfire/AbpDashboardOptionsProvider.cs | 11 ++++- .../Hangfire/HangfireBackgroundJobManager.cs | 2 +- .../Hangfire/HangfireJobExecutionAdapter.cs | 2 +- .../Quartz/AbpBackgroundJobsQuartzModule.cs | 2 +- .../Quartz/QuartzBackgroundJobManager.cs | 2 +- .../Quartz/QuartzJobExecutionAdapter.cs | 2 +- .../Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs | 2 +- .../RabbitMQ/IJobQueueManager.cs | 2 +- .../Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 2 +- .../RabbitMQ/JobQueueManager.cs | 2 +- .../RabbitMQ/RabbitMqBackgroundJobManager.cs | 2 +- .../TickerQ/AbpBackgroundJobsTickerQModule.cs | 2 +- .../TickerQ/AbpTickerQBackgroundJobManager.cs | 2 +- .../Abp/BackgroundJobs/BackgroundJobWorker.cs | 2 +- .../DefaultBackgroundJobManager.cs | 2 +- .../AbpBackgroundJobsTestModule.cs | 8 ++-- .../BackgroundJobManager_Tests.cs | 42 ++++++++++++++----- ...acker.cs => DynamicJobExecutionTracker.cs} | 2 +- .../DemoAppSharedModule.cs | 6 +-- .../Jobs/SampleJobCreator.cs | 9 +--- 24 files changed, 71 insertions(+), 50 deletions(-) rename framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/{AnonymousJobExecutionTracker.cs => DynamicJobExecutionTracker.cs} (76%) diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs index fa54ab5538..c17ccdc443 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Volo.Abp.BackgroundJobs; diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobExecuter.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobExecuter.cs index e8a840035f..6b6d822c50 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobExecuter.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobExecuter.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; using System; diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/DefaultDynamicBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/DefaultDynamicBackgroundJobManager.cs index 4d462b8529..ce1696ca50 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/DefaultDynamicBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/DefaultDynamicBackgroundJobManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Concurrent; +using System.Linq; using System.Reflection; using System.Threading.Tasks; using Microsoft.Extensions.Options; @@ -102,11 +103,11 @@ public class DefaultDynamicBackgroundJobManager : IDynamicBackgroundJobManager, { return EnqueueMethodCache.GetOrAdd(argsType, static type => { - var method = typeof(IBackgroundJobManager).GetMethod( - nameof(IBackgroundJobManager.EnqueueAsync), - BindingFlags.Public | BindingFlags.Instance); + var method = typeof(IBackgroundJobManager) + .GetMethods(BindingFlags.Public | BindingFlags.Instance) + .Single(m => m.Name == nameof(IBackgroundJobManager.EnqueueAsync) && m.IsGenericMethodDefinition); - return method!.MakeGenericMethod(type); + return method.MakeGenericMethod(type); }); } } diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/JobExecutionContext.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/JobExecutionContext.cs index 4ef2d2c19d..ae7e098070 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/JobExecutionContext.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/JobExecutionContext.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using Volo.Abp.DependencyInjection; diff --git a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs index 989cfb4357..68a6784cb5 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading; using Hangfire; using Microsoft.Extensions.Options; @@ -24,7 +24,14 @@ public class AbpDashboardOptionsProvider : ITransientDependency var jobName = job.ToString(); if (job.Args.Count == 3 && job.Args.Last() is CancellationToken) { - jobName = AbpBackgroundJobOptions.GetJob(job.Args[1].GetType()).JobName; + if (job.Args[1] is AnonymousJobArgs anonymousJobArgs) + { + jobName = anonymousJobArgs.JobName; + } + else + { + jobName = AbpBackgroundJobOptions.GetJob(job.Args[1].GetType()).JobName; + } } return jobName; diff --git a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs index 004a6856ce..0a47399e49 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Reflection; using System.Threading.Tasks; using Hangfire; diff --git a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs index d2ac1ed9cc..8790243334 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Hangfire; using Microsoft.Extensions.DependencyInjection; diff --git a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/AbpBackgroundJobsQuartzModule.cs b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/AbpBackgroundJobsQuartzModule.cs index 0589518c6f..6b2d8f36e0 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/AbpBackgroundJobsQuartzModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/AbpBackgroundJobsQuartzModule.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.Modularity; diff --git a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzBackgroundJobManager.cs index b116eae539..135c2fc6f7 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzBackgroundJobManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; using Quartz; diff --git a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs index 640a01d7a0..9005164043 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs index f265c488ad..b285f598cc 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Volo.Abp.Threading; diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueueManager.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueueManager.cs index 928e145b44..5e0ef18270 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueueManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueueManager.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Volo.Abp.Threading; namespace Volo.Abp.BackgroundJobs.RabbitMQ; diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index dff2a4e33a..ddc2613b47 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; using System.Threading; diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueManager.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueManager.cs index f9c7b4b1fb..09d27aea23 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks; diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs index 79f368a778..d81b2758b0 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; diff --git a/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTickerQModule.cs b/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTickerQModule.cs index 4ff3adbfe4..157f0cc050 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTickerQModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTickerQModule.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Reflection; using Microsoft.Extensions.DependencyInjection; diff --git a/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpTickerQBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpTickerQBackgroundJobManager.cs index daeb92cc78..638c1845f2 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpTickerQBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpTickerQBackgroundJobManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; using TickerQ.Utilities; diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs index 159f11a6d3..a015e32d66 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs index fb0891d8aa..586b66b5d1 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; using Volo.Abp.BackgroundWorkers; diff --git a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AbpBackgroundJobsTestModule.cs b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AbpBackgroundJobsTestModule.cs index 8eaca8928d..8f08d67c79 100644 --- a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AbpBackgroundJobsTestModule.cs +++ b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AbpBackgroundJobsTestModule.cs @@ -13,15 +13,17 @@ public class AbpBackgroundJobsTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.AddSingleton(); + context.Services.AddSingleton(); } public override void OnApplicationInitialization(ApplicationInitializationContext context) { + // Register handler via the singleton registry (through the transient manager). + // The handler persists because IDynamicBackgroundJobHandlerRegistry is a singleton. var dynamicJobManager = context.ServiceProvider.GetRequiredService(); - var tracker = context.ServiceProvider.GetRequiredService(); + var tracker = context.ServiceProvider.GetRequiredService(); - dynamicJobManager.RegisterHandler("TestAnonymousJob", (ctx, ct) => + dynamicJobManager.RegisterHandler("TestDynamicJob", (ctx, ct) => { tracker.ExecutedJsonData.Add(ctx.JsonData); return System.Threading.Tasks.Task.CompletedTask; diff --git a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/BackgroundJobManager_Tests.cs b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/BackgroundJobManager_Tests.cs index ebfd04c20e..c414e7b01a 100644 --- a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/BackgroundJobManager_Tests.cs +++ b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/BackgroundJobManager_Tests.cs @@ -10,12 +10,16 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase private readonly IBackgroundJobManager _backgroundJobManager; private readonly IDynamicBackgroundJobManager _dynamicBackgroundJobManager; private readonly IBackgroundJobStore _backgroundJobStore; + private readonly IBackgroundJobExecuter _backgroundJobExecuter; + private readonly DynamicJobExecutionTracker _tracker; public BackgroundJobManager_Tests() { _backgroundJobManager = GetRequiredService(); _dynamicBackgroundJobManager = GetRequiredService(); _backgroundJobStore = GetRequiredService(); + _backgroundJobExecuter = GetRequiredService(); + _tracker = GetRequiredService(); } [Fact] @@ -35,7 +39,7 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase } [Fact] - public async Task Should_Store_Jobs_With_JobName() + public async Task Should_Enqueue_Typed_Job_By_Name() { var jobName = BackgroundJobNameAttribute.GetName(); var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync(jobName, new @@ -50,7 +54,7 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase } [Fact] - public async Task Should_Store_Async_Jobs_With_JobName() + public async Task Should_Enqueue_Async_Typed_Job_By_Name() { var jobName = BackgroundJobNameAttribute.GetName(); var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync(jobName, new { Value = "42" }); @@ -62,20 +66,36 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase } [Fact] - public async Task Should_Store_Anonymous_Jobs() + public async Task Should_Enqueue_Dynamic_Handler_Job() { - var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync("TestAnonymousJob", new { OrderId = "ORD-001" }); + var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync("TestDynamicJob", new { OrderId = "ORD-001" }); jobIdAsString.ShouldNotBe(default); var jobInfo = await _backgroundJobStore.FindAsync(Guid.Parse(jobIdAsString)); jobInfo.ShouldNotBeNull(); jobInfo.JobName.ShouldBe(AnonymousJobArgs.JobNameConstant); - jobInfo.JobArgs.ShouldContain("TestAnonymousJob"); + jobInfo.JobArgs.ShouldContain("TestDynamicJob"); jobInfo.JobArgs.ShouldContain("ORD-001"); } [Fact] - public async Task Should_Not_Wrap_If_Typed_Job_Exists_For_Same_Name() + public async Task Should_Execute_Dynamic_Handler_Job() + { + _tracker.ExecutedJsonData.ShouldBeEmpty(); + + await _backgroundJobExecuter.ExecuteAsync( + new JobExecutionContext( + ServiceProvider, + typeof(AnonymousJobExecutorAsyncBackgroundJob), + new AnonymousJobArgs("TestDynamicJob", "{\"OrderId\":\"ORD-001\"}") + ) + ); + + _tracker.ExecutedJsonData.ShouldContain(d => d.Contains("ORD-001")); + } + + [Fact] + public async Task Should_Prefer_Typed_Job_Over_Dynamic_Handler() { var typedJobName = BackgroundJobNameAttribute.GetName(); _dynamicBackgroundJobManager.RegisterHandler(typedJobName, (_, _) => Task.CompletedTask); @@ -100,12 +120,12 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase [Fact] public void Should_Register_And_Unregister_Handler() { - _dynamicBackgroundJobManager.IsHandlerRegistered("TestDynamic").ShouldBeFalse(); + _dynamicBackgroundJobManager.IsHandlerRegistered("TestRegister").ShouldBeFalse(); - _dynamicBackgroundJobManager.RegisterHandler("TestDynamic", (_, _) => Task.CompletedTask); - _dynamicBackgroundJobManager.IsHandlerRegistered("TestDynamic").ShouldBeTrue(); + _dynamicBackgroundJobManager.RegisterHandler("TestRegister", (_, _) => Task.CompletedTask); + _dynamicBackgroundJobManager.IsHandlerRegistered("TestRegister").ShouldBeTrue(); - _dynamicBackgroundJobManager.UnregisterHandler("TestDynamic").ShouldBeTrue(); - _dynamicBackgroundJobManager.IsHandlerRegistered("TestDynamic").ShouldBeFalse(); + _dynamicBackgroundJobManager.UnregisterHandler("TestRegister").ShouldBeTrue(); + _dynamicBackgroundJobManager.IsHandlerRegistered("TestRegister").ShouldBeFalse(); } } diff --git a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AnonymousJobExecutionTracker.cs b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/DynamicJobExecutionTracker.cs similarity index 76% rename from framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AnonymousJobExecutionTracker.cs rename to framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/DynamicJobExecutionTracker.cs index b3160a2829..1885d39c2d 100644 --- a/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AnonymousJobExecutionTracker.cs +++ b/framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/DynamicJobExecutionTracker.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; namespace Volo.Abp.BackgroundJobs; -public class AnonymousJobExecutionTracker +public class DynamicJobExecutionTracker { public List ExecutedJsonData { get; } = new(); } diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs index 3c03e7bac6..79b9c655ca 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs @@ -13,11 +13,7 @@ namespace Volo.Abp.BackgroundJobs.DemoApp.Shared { public override void OnApplicationInitialization(ApplicationInitializationContext context) { - var dynamicJobManager = context.ServiceProvider.GetService(); - if (dynamicJobManager == null) - { - return; - } + var dynamicJobManager = context.ServiceProvider.GetRequiredService(); dynamicJobManager.RegisterHandler("CompileTimeAnonymousJob", (ctx, ct) => { diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs index ac0d662e26..1c63411a9f 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs @@ -9,11 +9,11 @@ namespace Volo.Abp.BackgroundJobs.DemoApp.Shared.Jobs public class SampleJobCreator : ITransientDependency { private readonly IBackgroundJobManager _backgroundJobManager; - private readonly IDynamicBackgroundJobManager? _dynamicBackgroundJobManager; + private readonly IDynamicBackgroundJobManager _dynamicBackgroundJobManager; public SampleJobCreator( IBackgroundJobManager backgroundJobManager, - IDynamicBackgroundJobManager? dynamicBackgroundJobManager = null) + IDynamicBackgroundJobManager dynamicBackgroundJobManager) { _backgroundJobManager = backgroundJobManager; _dynamicBackgroundJobManager = dynamicBackgroundJobManager; @@ -30,11 +30,6 @@ namespace Volo.Abp.BackgroundJobs.DemoApp.Shared.Jobs await _backgroundJobManager.EnqueueAsync(new WriteToConsoleGreenJobArgs { Value = "test 1 (green) - typed" }); await _backgroundJobManager.EnqueueAsync(new WriteToConsoleYellowJobArgs { Value = "test 1 (yellow) - typed" }); - if (_dynamicBackgroundJobManager == null) - { - return; - } - // Register runtime dynamic handler _dynamicBackgroundJobManager.RegisterHandler("RuntimeAnonymousJob", (context, ct) => {