Browse Source

Make worker and workermanager lifecycles singletons by default

pull/2904/head
liangshiwei 6 years ago
parent
commit
fb3d870459
  1. 14
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpBackgroundWorkersQuartzModule.cs
  2. 13
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpQuartzConventionalRegistrar.cs
  3. 3
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs

14
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpBackgroundWorkersQuartzModule.cs

@ -14,20 +14,16 @@ namespace Volo.Abp.BackgroundWorkers.Quartz
public override void PreConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddConventionalRegistrar(new AbpQuartzConventionalRegistrar());
context.Services.Replace(ServiceDescriptor.Transient<IBackgroundWorkerManager, QuartzBackgroundWorkerManager>());
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
using (var scope = context.ServiceProvider.CreateScope())
{
var backgroundWorkerManager = scope.ServiceProvider.GetService<IBackgroundWorkerManager>();
var works = scope.ServiceProvider.GetServices<IQuartzBackgroundWorker>();
var backgroundWorkerManager = context.ServiceProvider.GetService<IBackgroundWorkerManager>();
var works = context.ServiceProvider.GetServices<IQuartzBackgroundWorker>();
foreach (var work in works)
{
backgroundWorkerManager.Add(work);
}
foreach (var work in works)
{
backgroundWorkerManager.Add(work);
}
}
}

13
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpQuartzConventionalRegistrar.cs

@ -4,7 +4,7 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundWorkers.Quartz
{
public class AbpQuartzConventionalRegistrar : ConventionalRegistrarBase
public class AbpQuartzConventionalRegistrar : DefaultConventionalRegistrar
{
public override void AddType(IServiceCollection services, Type type)
{
@ -13,8 +13,15 @@ namespace Volo.Abp.BackgroundWorkers.Quartz
return;
}
services.AddTransient(typeof(IQuartzBackgroundWorker), type);
services.AddTransient(type);
var dependencyAttribute = GetDependencyAttributeOrNull(type);
var lifeTime = GetLifeTimeOrNull(type, dependencyAttribute);
if (lifeTime == null)
{
return;
}
services.Add(ServiceDescriptor.Describe(typeof(IQuartzBackgroundWorker), type, lifeTime.Value));
}
}
}

3
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs

@ -6,7 +6,8 @@ using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers.Quartz
{
public class QuartzBackgroundWorkerManager : IBackgroundWorkerManager, ITransientDependency
[Dependency(ReplaceServices = true)]
public class QuartzBackgroundWorkerManager : IBackgroundWorkerManager, ISingletonDependency
{
private readonly IScheduler _scheduler;

Loading…
Cancel
Save