Browse Source

Merge pull request #3454 from olicooper/olicooper/quartz-startup-delay

Add Quartz StartupDelay option
pull/3559/merge
Halil İbrahim Kalkan 7 years ago
committed by GitHub
parent
commit
ff032d8318
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzModule.cs
  2. 11
      framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzPreOptions.cs

13
framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Quartz; using Quartz;
using Quartz.Impl; using Quartz.Impl;
using Quartz.Spi; using Quartz.Spi;
@ -20,9 +21,19 @@ namespace Volo.Abp.Quartz
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpQuartzPreOptions>>().Value;
_scheduler = context.ServiceProvider.GetService<IScheduler>(); _scheduler = context.ServiceProvider.GetService<IScheduler>();
_scheduler.JobFactory = context.ServiceProvider.GetService<IJobFactory>(); _scheduler.JobFactory = context.ServiceProvider.GetService<IJobFactory>();
AsyncHelper.RunSync(() => _scheduler.Start());
if (options.StartDelay.Ticks > 0)
{
AsyncHelper.RunSync(() => _scheduler.StartDelayed(options.StartDelay));
}
else
{
AsyncHelper.RunSync(() => _scheduler.Start());
}
} }
public override void OnApplicationShutdown(ApplicationShutdownContext context) public override void OnApplicationShutdown(ApplicationShutdownContext context)

11
framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzPreOptions.cs

@ -1,14 +1,23 @@
using System.Collections.Specialized; using System;
using System.Collections.Specialized;
namespace Volo.Abp.Quartz namespace Volo.Abp.Quartz
{ {
public class AbpQuartzPreOptions public class AbpQuartzPreOptions
{ {
/// <summary>
/// The quartz configuration. Available properties can be found within Quartz.Impl.StdSchedulerFactory.
/// </summary>
public NameValueCollection Properties { get; set; } public NameValueCollection Properties { get; set; }
/// <summary>
/// How long Quartz should wait before starting. Default: 0.
/// </summary>
public TimeSpan StartDelay { get; set; }
public AbpQuartzPreOptions() public AbpQuartzPreOptions()
{ {
Properties = new NameValueCollection(); Properties = new NameValueCollection();
StartDelay = new TimeSpan(0);
} }
} }
} }

Loading…
Cancel
Save