Skip to content

Commit f0228f0

Browse files
committed
Add AddFunction helper to AbpTickerQFunctionProvider and use named tuple fields
1 parent e246cf4 commit f0228f0

6 files changed

Lines changed: 24 additions & 27 deletions

File tree

docs/en/framework/infrastructure/background-jobs/tickerq.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ public class CleanupJobs
9595
public override Task OnPreApplicationInitializationAsync(ApplicationInitializationContext context)
9696
{
9797
var abpTickerQFunctionProvider = context.ServiceProvider.GetRequiredService<AbpTickerQFunctionProvider>();
98-
abpTickerQFunctionProvider.Functions.TryAdd(nameof(CleanupJobs), (string.Empty, TickerTaskPriority.Normal, new TickerFunctionDelegate(async (cancellationToken, serviceProvider, tickerFunctionContext) =>
98+
abpTickerQFunctionProvider.AddFunction(nameof(CleanupJobs), async (cancellationToken, serviceProvider, tickerFunctionContext) =>
9999
{
100100
var service = new CleanupJobs(); // Or get it from the serviceProvider
101101
var request = await TickerRequestProvider.GetRequestAsync<string>(tickerFunctionContext, cancellationToken);
102102
var genericContext = new TickerFunctionContext<string>(tickerFunctionContext, request);
103103
await service.CleanupLogsAsync(genericContext, cancellationToken);
104-
}), 0));
104+
}, TickerTaskPriority.Normal);
105105
abpTickerQFunctionProvider.RequestTypes.TryAdd(nameof(CleanupJobs), (typeof(string).FullName, typeof(string)));
106106
return Task.CompletedTask;
107107
}

docs/en/framework/infrastructure/background-workers/tickerq.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ public class CleanupJobs
8383
public override Task OnPreApplicationInitializationAsync(ApplicationInitializationContext context)
8484
{
8585
var abpTickerQFunctionProvider = context.ServiceProvider.GetRequiredService<AbpTickerQFunctionProvider>();
86-
abpTickerQFunctionProvider.Functions.TryAdd(nameof(CleanupJobs), (string.Empty, TickerTaskPriority.Normal, new TickerFunctionDelegate(async (cancellationToken, serviceProvider, tickerFunctionContext) =>
86+
abpTickerQFunctionProvider.AddFunction(nameof(CleanupJobs), async (cancellationToken, serviceProvider, tickerFunctionContext) =>
8787
{
8888
var service = new CleanupJobs(); // Or get it from the serviceProvider
8989
var request = await TickerRequestProvider.GetRequestAsync<string>(tickerFunctionContext, cancellationToken);
9090
var genericContext = new TickerFunctionContext<string>(tickerFunctionContext, request);
9191
await service.CleanupLogsAsync(genericContext, cancellationToken);
92-
}), 0));
92+
}, TickerTaskPriority.Normal);
9393
abpTickerQFunctionProvider.RequestTypes.TryAdd(nameof(CleanupJobs), (typeof(string).FullName, typeof(string)));
9494
return Task.CompletedTask;
9595
}
@@ -112,11 +112,11 @@ await cronTickerManager.AddAsync(new CronTickerEntity
112112
You can specify a cron expression instead of using `ICronTickerManager<CronTickerEntity>` to add a worker:
113113

114114
```csharp
115-
abpTickerQFunctionProvider.Functions.TryAdd(nameof(CleanupJobs), (string.Empty, TickerTaskPriority.Normal, new TickerFunctionDelegate(async (cancellationToken, serviceProvider, tickerFunctionContext) =>
115+
abpTickerQFunctionProvider.AddFunction(nameof(CleanupJobs), async (cancellationToken, serviceProvider, tickerFunctionContext) =>
116116
{
117117
var service = new CleanupJobs();
118118
var request = await TickerRequestProvider.GetRequestAsync<string>(tickerFunctionContext, cancellationToken);
119119
var genericContext = new TickerFunctionContext<string>(tickerFunctionContext, request);
120120
await service.CleanupLogsAsync(genericContext, cancellationToken);
121-
}), 0));
121+
}, TickerTaskPriority.Normal);
122122
```

framework/src/Volo.Abp.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTickerQModule.cs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,14 @@ public override void OnApplicationInitialization(ApplicationInitializationContex
2323
{
2424
var abpBackgroundJobOptions = context.ServiceProvider.GetRequiredService<IOptions<AbpBackgroundJobOptions>>();
2525
var abpBackgroundJobsTickerQOptions = context.ServiceProvider.GetRequiredService<IOptions<AbpBackgroundJobsTickerQOptions>>();
26-
var tickerFunctionDelegates = new Dictionary<string, (string, TickerTaskPriority, TickerFunctionDelegate, int)>();
27-
var requestTypes = new Dictionary<string, (string, Type)>();
26+
var abpTickerQFunctionProvider = context.ServiceProvider.GetRequiredService<AbpTickerQFunctionProvider>();
2827
foreach (var jobConfiguration in abpBackgroundJobOptions.Value.GetJobs())
2928
{
3029
var genericMethod = GetTickerFunctionDelegateMethod.MakeGenericMethod(jobConfiguration.ArgsType);
3130
var tickerFunctionDelegate = (TickerFunctionDelegate)genericMethod.Invoke(null, [jobConfiguration.ArgsType])!;
3231
var config = abpBackgroundJobsTickerQOptions.Value.GetConfigurationOrNull(jobConfiguration.JobType);
33-
tickerFunctionDelegates.TryAdd(jobConfiguration.JobName, (string.Empty, config?.Priority ?? TickerTaskPriority.Normal, tickerFunctionDelegate, config?.MaxConcurrency ?? 0));
34-
requestTypes.TryAdd(jobConfiguration.JobName, (jobConfiguration.ArgsType.FullName, jobConfiguration.ArgsType)!);
35-
}
36-
37-
var abpTickerQFunctionProvider = context.ServiceProvider.GetRequiredService<AbpTickerQFunctionProvider>();
38-
foreach (var functionDelegate in tickerFunctionDelegates)
39-
{
40-
abpTickerQFunctionProvider.Functions.TryAdd(functionDelegate.Key, functionDelegate.Value);
41-
}
42-
43-
foreach (var requestType in requestTypes)
44-
{
45-
abpTickerQFunctionProvider.RequestTypes.TryAdd(requestType.Key, requestType.Value);
32+
abpTickerQFunctionProvider.AddFunction(jobConfiguration.JobName, tickerFunctionDelegate, config?.Priority ?? TickerTaskPriority.Normal, config?.MaxConcurrency ?? 0);
33+
abpTickerQFunctionProvider.RequestTypes.TryAdd(jobConfiguration.JobName, (jobConfiguration.ArgsType.FullName, jobConfiguration.ArgsType)!);
4634
}
4735
}
4836

framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/AbpTickerQBackgroundWorkerManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ public override async Task AddAsync(IBackgroundWorker worker, CancellationToken
5353
var name = BackgroundWorkerNameAttribute.GetNameOrNull(worker.GetType()) ?? worker.GetType().FullName;
5454

5555
var config = Options.GetConfigurationOrNull(ProxyHelper.GetUnProxiedType(worker));
56-
AbpTickerQFunctionProvider.Functions.TryAdd(name!, (string.Empty, config?.Priority ?? TickerTaskPriority.LongRunning, async (tickerQCancellationToken, serviceProvider, tickerFunctionContext) =>
56+
AbpTickerQFunctionProvider.AddFunction(name!, async (tickerQCancellationToken, serviceProvider, tickerFunctionContext) =>
5757
{
5858
var workerInvoker = new AbpTickerQPeriodicBackgroundWorkerInvoker(worker, serviceProvider);
5959
await workerInvoker.DoWorkAsync(tickerFunctionContext, tickerQCancellationToken);
60-
}, config?.MaxConcurrency ?? 0));
60+
}, config?.Priority ?? TickerTaskPriority.LongRunning, config?.MaxConcurrency ?? 0);
6161

6262
AbpTickerQBackgroundWorkersProvider.BackgroundWorkers.Add(name!, new AbpTickerQCronBackgroundWorker
6363
{

framework/src/Volo.Abp.TickerQ/Volo/Abp/TickerQ/AbpTickerQFunctionProvider.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,22 @@ namespace Volo.Abp.TickerQ;
88

99
public class AbpTickerQFunctionProvider : ISingletonDependency
1010
{
11-
public Dictionary<string, (string, TickerTaskPriority, TickerFunctionDelegate, int)> Functions { get;}
11+
public Dictionary<string, (string CronExpression, TickerTaskPriority Priority, TickerFunctionDelegate Function, int MaxConcurrency)> Functions { get; }
1212

13-
public Dictionary<string, (string, Type)> RequestTypes { get; }
13+
public Dictionary<string, (string TypeName, Type Type)> RequestTypes { get; }
1414

1515
public AbpTickerQFunctionProvider()
1616
{
1717
Functions = new Dictionary<string, (string, TickerTaskPriority, TickerFunctionDelegate, int)>();
1818
RequestTypes = new Dictionary<string, (string, Type)>();
1919
}
20+
21+
public void AddFunction(
22+
string name,
23+
TickerFunctionDelegate function,
24+
TickerTaskPriority priority = TickerTaskPriority.Normal,
25+
int maxConcurrency = 0)
26+
{
27+
Functions.TryAdd(name, (string.Empty, priority, function, maxConcurrency));
28+
}
2029
}

modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.TickerQ/DemoAppTickerQModule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ public override void ConfigureServices(ServiceConfigurationContext context)
7777
public override Task OnPreApplicationInitializationAsync(ApplicationInitializationContext context)
7878
{
7979
var abpTickerQFunctionProvider = context.ServiceProvider.GetRequiredService<AbpTickerQFunctionProvider>();
80-
abpTickerQFunctionProvider.Functions.TryAdd(nameof(CleanupJobs), (string.Empty, TickerTaskPriority.Normal, new TickerFunctionDelegate(async (cancellationToken, serviceProvider, tickerFunctionContext) =>
80+
abpTickerQFunctionProvider.AddFunction(nameof(CleanupJobs), async (cancellationToken, serviceProvider, tickerFunctionContext) =>
8181
{
8282
var service = new CleanupJobs();
8383
var request = await TickerRequestProvider.GetRequestAsync<string>(tickerFunctionContext, cancellationToken);
8484
var genericContext = new TickerFunctionContext<string>(tickerFunctionContext, request);
8585
await service.CleanupLogsAsync(genericContext, cancellationToken);
86-
}), 0));
86+
}, TickerTaskPriority.Normal);
8787
abpTickerQFunctionProvider.RequestTypes.TryAdd(nameof(CleanupJobs), (typeof(string).FullName, typeof(string)));
8888
return Task.CompletedTask;
8989
}

0 commit comments

Comments
 (0)