From 9b6d427dc74d30868a5d658179a35a713c4c6da3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 31 Dec 2021 10:36:39 +0800 Subject: [PATCH] Fix the problem of background workers integration --- .../Hangfire/AbpBackgroundWorkersHangfireModule.cs | 2 +- .../Hangfire/HangfireBackgroundWorkerManager.cs | 14 +++++++++++--- .../QuartzPeriodicBackgroundWorkerAdapter.cs | 14 +++++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs index 4efbdcffb7..c454c9f6e6 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.BackgroundWorkers.Hangfire [DependsOn( typeof(AbpBackgroundWorkersModule), typeof(AbpHangfireModule))] - public class AbpBackgroundWorkerHangfireModule : AbpModule + public class AbpBackgroundWorkersHangfireModule : AbpModule { public override void OnPreApplicationInitialization(ApplicationInitializationContext context) { diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs index 272cc3cdcd..2a9cb33a10 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs @@ -42,9 +42,17 @@ namespace Volo.Abp.BackgroundWorkers.Hangfire if (worker is AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase) { - var timer = (AbpAsyncTimer) worker.GetType() + var timer = worker.GetType() .GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker); - period = timer?.Period; + + if (worker is AsyncPeriodicBackgroundWorkerBase) + { + period = ((AbpAsyncTimer)timer)?.Period; + } + else + { + period = ((AbpTimer)timer)?.Period; + } } else { @@ -82,7 +90,7 @@ namespace Volo.Abp.BackgroundWorkers.Hangfire } else { - cron = $"0 0 */{time.TotalDays} * *"; + throw new AbpException($"Cannot convert period: {period} to cron expression, use HangfireBackgroundWorkerBase to define worker"); } return cron; diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs index aa99434ed5..16286d3153 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs @@ -28,15 +28,23 @@ namespace Volo.Abp.BackgroundWorkers.Quartz int? period; var workerType = worker.GetType(); - if (worker is AsyncPeriodicBackgroundWorkerBase || worker is PeriodicBackgroundWorkerBase) + if (worker is AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase) { if (typeof(TWorker) != worker.GetType()) { throw new ArgumentException($"{nameof(worker)} type is different from the generic type"); } - var timer = (AbpAsyncTimer) worker.GetType().GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker); - period = timer?.Period; + var timer = worker.GetType().GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker); + + if (worker is AsyncPeriodicBackgroundWorkerBase) + { + period = ((AbpAsyncTimer)timer)?.Period; + } + else + { + period = ((AbpTimer)timer)?.Period; + } } else {