Browse Source

Fix whitespace issues and update job handler registration in background job management

pull/25059/head
maliming 2 weeks ago
parent
commit
5d74d97566
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs
  2. 2
      framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobExecuter.cs
  3. 9
      framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/DefaultDynamicBackgroundJobManager.cs
  4. 2
      framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/JobExecutionContext.cs
  5. 11
      framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs
  6. 2
      framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs
  7. 2
      framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs
  8. 2
      framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/AbpBackgroundJobsQuartzModule.cs
  9. 2
      framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzBackgroundJobManager.cs
  10. 2
      framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs
  11. 2
      framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs
  12. 2
      framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueueManager.cs
  13. 2
      framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs
  14. 2
      framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueManager.cs
  15. 2
      framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs
  16. 2
      framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTickerQModule.cs
  17. 2
      framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpTickerQBackgroundJobManager.cs
  18. 2
      framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs
  19. 2
      framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs
  20. 8
      framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AbpBackgroundJobsTestModule.cs
  21. 42
      framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/BackgroundJobManager_Tests.cs
  22. 2
      framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/DynamicJobExecutionTracker.cs
  23. 6
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs
  24. 9
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs

2
framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs

@ -1,4 +1,4 @@
using System;
using System;
namespace Volo.Abp.BackgroundJobs;

2
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;

9
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);
});
}
}

2
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;

11
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

2
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;

8
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<AnonymousJobExecutionTracker>();
context.Services.AddSingleton<DynamicJobExecutionTracker>();
}
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<IDynamicBackgroundJobManager>();
var tracker = context.ServiceProvider.GetRequiredService<AnonymousJobExecutionTracker>();
var tracker = context.ServiceProvider.GetRequiredService<DynamicJobExecutionTracker>();
dynamicJobManager.RegisterHandler("TestAnonymousJob", (ctx, ct) =>
dynamicJobManager.RegisterHandler("TestDynamicJob", (ctx, ct) =>
{
tracker.ExecutedJsonData.Add(ctx.JsonData);
return System.Threading.Tasks.Task.CompletedTask;

42
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<IBackgroundJobManager>();
_dynamicBackgroundJobManager = GetRequiredService<IDynamicBackgroundJobManager>();
_backgroundJobStore = GetRequiredService<IBackgroundJobStore>();
_backgroundJobExecuter = GetRequiredService<IBackgroundJobExecuter>();
_tracker = GetRequiredService<DynamicJobExecutionTracker>();
}
[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<MyJobArgs>();
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<MyAsyncJobArgs>();
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<MyJobArgs>();
_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();
}
}

2
framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundJobs/AnonymousJobExecutionTracker.cs → 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<string> ExecutedJsonData { get; } = new();
}

6
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<IDynamicBackgroundJobManager>();
if (dynamicJobManager == null)
{
return;
}
var dynamicJobManager = context.ServiceProvider.GetRequiredService<IDynamicBackgroundJobManager>();
dynamicJobManager.RegisterHandler("CompileTimeAnonymousJob", (ctx, ct) =>
{

9
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) =>
{

Loading…
Cancel
Save