maliming
4 months ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
4 changed files with
30 additions and
5 deletions
-
framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQBackgroundWorkerManager.cs
-
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.TickerQ/DemoAppTickerQModule.cs
-
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.TickerQ/MyBackgroundWorker.cs
-
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.TickerQ/Volo.Abp.BackgroundJobs.DemoApp.TickerQ.csproj
|
|
|
@ -41,11 +41,7 @@ public class TickerQBackgroundWorkerManager : BackgroundWorkerManager, ISingleto |
|
|
|
throw new AbpException($"Both 'Period' and 'CronExpression' are not set for {worker.GetType().FullName}. You must set at least one of them."); |
|
|
|
} |
|
|
|
|
|
|
|
if (period != null && cronExpression.IsNullOrWhiteSpace()) |
|
|
|
{ |
|
|
|
cronExpression = GetCron(period.Value); |
|
|
|
} |
|
|
|
|
|
|
|
cronExpression = cronExpression ?? GetCron(period!.Value); |
|
|
|
var name = BackgroundWorkerNameAttribute.GetNameOrNull(worker.GetType()) ?? worker.GetType().FullName; |
|
|
|
AbpTickerQFunctionProvider.Functions.TryAdd(name!, (cronExpression!, TickerTaskPriority.LongRunning, async (tickerQCancellationToken, serviceProvider, tickerFunctionContext) => |
|
|
|
{ |
|
|
|
|
|
|
|
@ -11,12 +11,15 @@ using Volo.Abp.Autofac; |
|
|
|
using Volo.Abp.BackgroundJobs.DemoApp.Shared; |
|
|
|
using Volo.Abp.BackgroundJobs.DemoApp.Shared.Jobs; |
|
|
|
using Volo.Abp.BackgroundJobs.TickerQ; |
|
|
|
using Volo.Abp.BackgroundWorkers; |
|
|
|
using Volo.Abp.BackgroundWorkers.TickerQ; |
|
|
|
using Volo.Abp.Modularity; |
|
|
|
|
|
|
|
namespace Volo.Abp.BackgroundJobs.DemoApp.TickerQ; |
|
|
|
|
|
|
|
[DependsOn( |
|
|
|
typeof(AbpBackgroundJobsTickerQModule), |
|
|
|
typeof(AbpBackgroundWorkersTickerQModule), |
|
|
|
typeof(DemoAppSharedModule), |
|
|
|
typeof(AbpAutofacModule), |
|
|
|
typeof(AbpAspNetCoreModule) |
|
|
|
@ -48,6 +51,9 @@ public class DemoAppTickerQModule : AbpModule |
|
|
|
|
|
|
|
public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) |
|
|
|
{ |
|
|
|
var backgroundWorkerManager = context.ServiceProvider.GetRequiredService<IBackgroundWorkerManager>(); |
|
|
|
await backgroundWorkerManager.AddAsync(context.ServiceProvider.GetRequiredService<MyBackgroundWorker>()); |
|
|
|
|
|
|
|
var app = context.GetApplicationBuilder(); |
|
|
|
app.UseAbpTickerQ(); |
|
|
|
|
|
|
|
|
|
|
|
@ -0,0 +1,22 @@ |
|
|
|
using System; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using JetBrains.Annotations; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Volo.Abp.BackgroundWorkers; |
|
|
|
using Volo.Abp.Threading; |
|
|
|
|
|
|
|
namespace Volo.Abp.BackgroundJobs.DemoApp.TickerQ; |
|
|
|
|
|
|
|
public class MyBackgroundWorker : AsyncPeriodicBackgroundWorkerBase |
|
|
|
{ |
|
|
|
public MyBackgroundWorker([NotNull] AbpAsyncTimer timer, [NotNull] IServiceScopeFactory serviceScopeFactory) : base(timer, serviceScopeFactory) |
|
|
|
{ |
|
|
|
timer.Period = 60 * 1000; // 60 seconds
|
|
|
|
CronExpression = "* * * * *"; // every minute
|
|
|
|
} |
|
|
|
|
|
|
|
protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
|
|
|
{ |
|
|
|
Console.WriteLine($"MyBackgroundWorker executed at {DateTime.Now}"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -8,6 +8,7 @@ |
|
|
|
<ItemGroup> |
|
|
|
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> |
|
|
|
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.BackgroundJobs.TickerQ\Volo.Abp.BackgroundJobs.TickerQ.csproj" /> |
|
|
|
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.BackgroundWorkers.TickerQ\Volo.Abp.BackgroundWorkers.TickerQ.csproj" /> |
|
|
|
<ProjectReference Include="..\Volo.Abp.BackgroundJobs.DemoApp.Shared\Volo.Abp.BackgroundJobs.DemoApp.Shared.csproj" /> |
|
|
|
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore\Volo.Abp.AspNetCore.csproj" /> |
|
|
|
</ItemGroup> |
|
|
|
|