Browse Source

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

pull/25066/head
maliming 1 week 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(
string workerName,
DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler,
DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default)
{
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(
string workerName,
DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler,
DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default)
{
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.Tasks;
using Volo.Abp.DependencyInjection;
@ -11,7 +10,7 @@ public class TickerQDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
public virtual Task AddAsync(
string workerName,
DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler,
DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default)
{
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(
string workerName,
DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler,
DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default)
{
Check.NotNullOrWhiteSpace(workerName, nameof(workerName));
@ -155,7 +155,7 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
protected virtual InMemoryDynamicBackgroundWorker CreateDynamicWorker(
string workerName,
DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler)
DynamicBackgroundWorkerHandler handler)
{
var timer = ServiceProvider.GetRequiredService<AbpAsyncTimer>();
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.Threading;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundWorkers;
public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHandlerRegistry, ISingletonDependency
{
protected ConcurrentDictionary<string, Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task>> Handlers { get; }
protected ConcurrentDictionary<string, DynamicBackgroundWorkerHandler> Handlers { get; }
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.NotNull(handler, nameof(handler));
@ -35,7 +32,7 @@ public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHa
return Handlers.ContainsKey(workerName);
}
public virtual Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task>? Get(string workerName)
public virtual DynamicBackgroundWorkerHandler? Get(string workerName)
{
Check.NotNullOrWhiteSpace(workerName, nameof(workerName));
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.Tasks;
@ -12,7 +11,7 @@ public static class DynamicBackgroundWorkerManagerExtensions
public static Task AddAsync(
this IDynamicBackgroundWorkerManager manager,
string workerName,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler,
DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default)
{
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;
public interface IDynamicBackgroundWorkerHandlerRegistry
{
void Register(string workerName, Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler);
void Register(string workerName, DynamicBackgroundWorkerHandler handler);
bool Unregister(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.Tasks;
@ -17,7 +16,7 @@ public interface IDynamicBackgroundWorkerManager
Task AddAsync(
string workerName,
DynamicBackgroundWorkerSchedule schedule,
Func<DynamicBackgroundWorkerExecutionContext, CancellationToken, Task> handler,
DynamicBackgroundWorkerHandler handler,
CancellationToken cancellationToken = default);
/// <summary>

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

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

Loading…
Cancel
Save