Browse Source

fix: Refactor background worker handler to use delegate type for improved clarity and consistency

pull/25066/head
maliming 6 months ago
parent
commit
a18cd1c5e9
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs
  2. 2
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs
  3. 3
      framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQDynamicBackgroundWorkerManager.cs
  4. 4
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs
  5. 6
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandler.cs
  6. 11
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandlerRegistry.cs
  7. 3
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManagerExtensions.cs
  8. 8
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerHandlerRegistry.cs
  9. 3
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs
  10. 6
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs

2
framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs

@ -31,7 +31,7 @@ public class HangfireDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMa
public virtual Task AddAsync( public virtual Task AddAsync(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); Check.NotNullOrWhiteSpace(workerName, nameof(workerName));

2
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs

@ -29,7 +29,7 @@ public class QuartzDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMana
public virtual async Task AddAsync( public virtual async Task AddAsync(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); Check.NotNullOrWhiteSpace(workerName, nameof(workerName));

3
framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQDynamicBackgroundWorkerManager.cs

@ -1,4 +1,3 @@
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -11,7 +10,7 @@ public class TickerQDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
public virtual Task AddAsync( public virtual Task AddAsync(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
throw new AbpException( throw new AbpException(

4
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs

@ -30,7 +30,7 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
public virtual async Task AddAsync( public virtual async Task AddAsync(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); Check.NotNullOrWhiteSpace(workerName, nameof(workerName));
@ -155,7 +155,7 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
protected virtual InMemoryDynamicBackgroundWorker CreateDynamicWorker( protected virtual InMemoryDynamicBackgroundWorker CreateDynamicWorker(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler) DynamicBackgroundWorkerHandler handler)
{ {
var timer = ServiceProvider.GetRequiredService<AbpAsyncTimer>(); var timer = ServiceProvider.GetRequiredService<AbpAsyncTimer>();
var serviceScopeFactory = ServiceProvider.GetRequiredService<IServiceScopeFactory>(); var serviceScopeFactory = ServiceProvider.GetRequiredService<IServiceScopeFactory>();

6
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandler.cs

@ -0,0 +1,6 @@
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.BackgroundWorkers;
public delegate Task DynamicBackgroundWorkerHandler(DynamicBackgroundWorkerExecutionContext context, CancellationToken cancellationToken);

11
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandlerRegistry.cs

@ -1,21 +1,18 @@
using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundWorkers; namespace Volo.Abp.BackgroundWorkers;
public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHandlerRegistry, ISingletonDependency public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHandlerRegistry, ISingletonDependency
{ {
protected ConcurrentDictionary<string, Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task>> Handlers { get; } protected ConcurrentDictionary<string, DynamicBackgroundWorkerHandler> Handlers { get; }
public DynamicBackgroundWorkerHandlerRegistry() public DynamicBackgroundWorkerHandlerRegistry()
{ {
Handlers = new ConcurrentDictionary<string, Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task>>(); Handlers = new ConcurrentDictionary<string, DynamicBackgroundWorkerHandler>();
} }
public virtual void Register(string workerName, Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler) public virtual void Register(string workerName, DynamicBackgroundWorkerHandler handler)
{ {
Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); Check.NotNullOrWhiteSpace(workerName, nameof(workerName));
Check.NotNull(handler, nameof(handler)); Check.NotNull(handler, nameof(handler));
@ -35,7 +32,7 @@ public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHa
return Handlers.ContainsKey(workerName); return Handlers.ContainsKey(workerName);
} }
public virtual Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task>? Get(string workerName) public virtual DynamicBackgroundWorkerHandler? Get(string workerName)
{ {
Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); Check.NotNullOrWhiteSpace(workerName, nameof(workerName));
return Handlers.TryGetValue(workerName, out var handler) ? handler : null; return Handlers.TryGetValue(workerName, out var handler) ? handler : null;

3
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManagerExtensions.cs

@ -1,4 +1,3 @@
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -12,7 +11,7 @@ public static class DynamicBackgroundWorkerManagerExtensions
public static Task AddAsync( public static Task AddAsync(
this IDynamicBackgroundWorkerManager manager, this IDynamicBackgroundWorkerManager manager,
string workerName, string workerName,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return manager.AddAsync( return manager.AddAsync(

8
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerHandlerRegistry.cs

@ -1,16 +1,12 @@
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.BackgroundWorkers; namespace Volo.Abp.BackgroundWorkers;
public interface IDynamicBackgroundWorkerHandlerRegistry public interface IDynamicBackgroundWorkerHandlerRegistry
{ {
void Register(string workerName, Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler); void Register(string workerName, DynamicBackgroundWorkerHandler handler);
bool Unregister(string workerName); bool Unregister(string workerName);
bool IsRegistered(string workerName); bool IsRegistered(string workerName);
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task>? Get(string workerName); DynamicBackgroundWorkerHandler? Get(string workerName);
} }

3
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs

@ -1,4 +1,3 @@
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -17,7 +16,7 @@ public interface IDynamicBackgroundWorkerManager
Task AddAsync( Task AddAsync(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
/// <summary> /// <summary>

6
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs

@ -1,8 +1,6 @@
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.Threading; using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers; namespace Volo.Abp.BackgroundWorkers;
@ -11,12 +9,12 @@ public class InMemoryDynamicBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
{ {
public string WorkerName { get; } public string WorkerName { get; }
private readonly Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> _handler; private readonly DynamicBackgroundWorkerHandler _handler;
public InMemoryDynamicBackgroundWorker( public InMemoryDynamicBackgroundWorker(
string workerName, string workerName,
DynamicBackgroundWorkerSchedule schedule, DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler, DynamicBackgroundWorkerHandler handler,
AbpAsyncTimer timer, AbpAsyncTimer timer,
IServiceScopeFactory serviceScopeFactory) IServiceScopeFactory serviceScopeFactory)
: base(timer, serviceScopeFactory) : base(timer, serviceScopeFactory)

Loading…
Cancel
Save