Skip to content

Commit bc4bc6f

Browse files
authored
Merge pull request #25091 from abpframework/upgrade-tickerq-10.2.0
Upgrade TickerQ packages to 10.2.0 and add helper to
2 parents af4bee9 + 5eaffd2 commit bc4bc6f

10 files changed

Lines changed: 48 additions & 32 deletions

File tree

Directory.Packages.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,10 @@
183183
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
184184
<PackageVersion Include="TencentCloudSDK.Sms" Version="3.0.1273" />
185185
<PackageVersion Include="TimeZoneConverter" Version="7.2.0" />
186-
<PackageVersion Include="TickerQ" Version="10.1.1" />
187-
<PackageVersion Include="TickerQ.Dashboard" Version="10.1.1" />
188-
<PackageVersion Include="TickerQ.Utilities" Version="10.1.1" />
189-
<PackageVersion Include="TickerQ.EntityFrameworkCore" Version="10.1.1" />
186+
<PackageVersion Include="TickerQ" Version="10.2.0" />
187+
<PackageVersion Include="TickerQ.Dashboard" Version="10.2.0" />
188+
<PackageVersion Include="TickerQ.Utilities" Version="10.2.0" />
189+
<PackageVersion Include="TickerQ.EntityFrameworkCore" Version="10.2.0" />
190190
<PackageVersion Include="Unidecode.NET" Version="2.1.0" />
191191
<PackageVersion Include="xunit" Version="2.9.3" />
192192
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" />

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-
})));
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-
})));
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-
})));
121+
}, TickerTaskPriority.Normal);
122122
```

docs/en/package-version-changes.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
| Microsoft.IdentityModel.Protocols.OpenIdConnect | 8.14.0 | 8.16.0 | #25068 |
99
| Microsoft.IdentityModel.Tokens | 8.14.0 | 8.16.0 | #25068 |
1010
| System.IdentityModel.Tokens.Jwt | 8.14.0 | 8.16.0 | #25068 |
11+
| TickerQ | 10.1.1 | 10.2.0 | #25091 |
12+
| TickerQ.Dashboard | 10.1.1 | 10.2.0 | #25091 |
13+
| TickerQ.EntityFrameworkCore | 10.1.1 | 10.2.0 | #25091 |
14+
| TickerQ.Utilities | 10.1.1 | 10.2.0 | #25091 |
1115

1216
## 10.3.0-preview
1317

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)>();
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));
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.BackgroundJobs.TickerQ/Volo/Abp/BackgroundJobs/TickerQ/AbpBackgroundJobsTimeTickerConfiguration.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@ public class AbpBackgroundJobsTimeTickerConfiguration
1010

1111
public TickerTaskPriority? Priority { get; set; }
1212

13+
public int? MaxConcurrency { get; set; }
14+
1315
public RunCondition? RunCondition { get; set; }
1416
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ public class AbpBackgroundWorkersCronTickerConfiguration
99
public int[]? RetryIntervals { get; set; }
1010

1111
public TickerTaskPriority? Priority { get; set; }
12+
13+
public int? MaxConcurrency { get; set; }
1214
}

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-
}));
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: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,33 @@ namespace Volo.Abp.TickerQ;
88

99
public class AbpTickerQFunctionProvider : ISingletonDependency
1010
{
11-
public Dictionary<string, (string, TickerTaskPriority, TickerFunctionDelegate)> 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
{
17-
Functions = new Dictionary<string, (string, TickerTaskPriority, TickerFunctionDelegate)>();
17+
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+
Check.NotNullOrWhiteSpace(name, nameof(name));
28+
Check.NotNull(function, nameof(function));
29+
30+
if (maxConcurrency < 0)
31+
{
32+
throw new ArgumentException("maxConcurrency must be greater than or equal to 0.", nameof(maxConcurrency));
33+
}
34+
35+
if (!Functions.TryAdd(name, (string.Empty, priority, function, maxConcurrency)))
36+
{
37+
throw new AbpException($"A function with the name '{name}' is already registered.");
38+
}
39+
}
2040
}

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-
})));
86+
}, TickerTaskPriority.Normal);
8787
abpTickerQFunctionProvider.RequestTypes.TryAdd(nameof(CleanupJobs), (typeof(string).FullName, typeof(string)));
8888
return Task.CompletedTask;
8989
}

0 commit comments

Comments
 (0)