Browse Source

Allow developers to customize ScheduleJob

pull/3382/head
liangshiwei 6 years ago
parent
commit
9fac2baa7f
  1. 6
      framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs
  2. 6
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/IQuartzBackgroundWorker.cs
  3. 5
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerBase.cs
  4. 22
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs

6
framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs

@ -32,12 +32,6 @@ namespace Volo.Abp.BackgroundJobs.Quartz
public async Task Execute(IJobExecutionContext context)
{
if (!Options.IsJobExecutionEnabled)
{
Logger.LogWarning("Background jobs system is disabled");
return;
}
using (var scope = ServiceScopeFactory.CreateScope())
{
var args = (TArgs) context.JobDetail.JobDataMap.Get(nameof(TArgs));

6
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/IQuartzBackgroundWorker.cs

@ -1,4 +1,6 @@
using Quartz;
using System;
using System.Threading.Tasks;
using Quartz;
namespace Volo.Abp.BackgroundWorkers.Quartz
{
@ -9,5 +11,7 @@ namespace Volo.Abp.BackgroundWorkers.Quartz
IJobDetail JobDetail { get; set; }
bool AutoRegister { get; set; }
Func<IScheduler,Task> ScheduleJob { get; set; }
}
}

5
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerBase.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;
using Quartz;
namespace Volo.Abp.BackgroundWorkers.Quartz
@ -10,6 +11,8 @@ namespace Volo.Abp.BackgroundWorkers.Quartz
public IJobDetail JobDetail { get; set; }
public bool AutoRegister { get; set; } = true;
public Func<IScheduler, Task> ScheduleJob { get; set; } = null;
public abstract Task Execute(IJobExecutionContext context);
}

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

@ -41,17 +41,29 @@ namespace Volo.Abp.BackgroundWorkers.Quartz
Check.NotNull(quartzWork.Trigger, nameof(quartzWork.Trigger));
Check.NotNull(quartzWork.JobDetail, nameof(quartzWork.JobDetail));
if (await _scheduler.CheckExists(quartzWork.JobDetail.Key))
if (quartzWork.ScheduleJob != null)
{
await _scheduler.AddJob(quartzWork.JobDetail, true, true);
await _scheduler.ResumeJob(quartzWork.JobDetail.Key);
await _scheduler.RescheduleJob(quartzWork.Trigger.Key, quartzWork.Trigger);
await quartzWork.ScheduleJob.Invoke(_scheduler);
}
else
{
await _scheduler.ScheduleJob(quartzWork.JobDetail, quartzWork.Trigger);
await DefaultScheduleJobAsync(quartzWork);
}
}
}
protected virtual async Task DefaultScheduleJobAsync(IQuartzBackgroundWorker quartzWork)
{
if (await _scheduler.CheckExists(quartzWork.JobDetail.Key))
{
await _scheduler.AddJob(quartzWork.JobDetail, true, true);
await _scheduler.ResumeJob(quartzWork.JobDetail.Key);
await _scheduler.RescheduleJob(quartzWork.Trigger.Key, quartzWork.Trigger);
}
else
{
await _scheduler.ScheduleJob(quartzWork.JobDetail, quartzWork.Trigger);
}
}
}
}
Loading…
Cancel
Save