Skip to content

Commit 642a440

Browse files
author
zhengbw
committed
fix issue: Manual Job not be added into Scheduler
1 parent 0bfcd5b commit 642a440

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

src/SilkierQuartz/Configuration/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public static IServiceCollection AddSilkierQuartz(
5959
types.ForEach(t =>
6060
{
6161
var so = t.GetCustomAttribute<SilkierQuartzAttribute>();
62-
services.AddQuartzJob(t, so.Identity ?? t.Name, so.Group, so.Description ?? t.FullName);
62+
services.AddQuartzJob(t, so.Identity ?? t.Name, so.Manual ? true : false, so.Group, so.Description ?? t.FullName);
6363
});
6464
return services;
6565
}

src/SilkierQuartz/HostedService/IJobRegistratorExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,18 @@ public static IServiceCollection AddQuartzJobDetail(this IServiceCollection serv
3535
return services;
3636
}
3737

38-
public static IServiceCollection AddQuartzJob<TJob>(this IServiceCollection services, string identity, string? group = null, string? description = null) where TJob : class
38+
public static IServiceCollection AddQuartzJob<TJob>(this IServiceCollection services, string identity, bool durability = false, string? group = null, string? description = null) where TJob : class
3939
{
40-
return services.AddQuartzJob(typeof(TJob), identity, group, description);
40+
return services.AddQuartzJob(typeof(TJob), identity, durability, group, description);
4141
}
4242

43-
public static IServiceCollection AddQuartzJob(this IServiceCollection services, Type t, string identity, string? group = null, string? description = null)
43+
public static IServiceCollection AddQuartzJob(this IServiceCollection services, Type t, string identity, bool durability = false, string ? group = null, string? description = null)
4444
{
4545
if (!services.Any(sd => sd.ServiceType == t))
4646
{
4747
services.AddTransient(t);
4848
}
49-
var jobDetail = JobBuilder.Create(t).WithIdentity(identity, group).WithDescription(description).Build();
49+
var jobDetail = JobBuilder.Create(t).StoreDurably(durability).WithIdentity(identity, group).WithDescription(description).Build();
5050
services.AddSingleton<IScheduleJob>(provider => new ScheduleJob(jobDetail, new List<ITrigger>()));
5151
return services;
5252
}

src/SilkierQuartz/HostedService/QuartzHostedService.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,25 +43,32 @@ public async Task StartAsync(CancellationToken cancellationToken)
4343

4444
foreach (var scheduleJob in _scheduleJobs)
4545
{
46-
var isNewJob = true;
47-
foreach (var trigger in scheduleJob.Triggers)
46+
if (scheduleJob.Triggers != null && scheduleJob.Triggers.Any())
4847
{
49-
50-
if (isNewJob)
48+
var isNewJob = true;
49+
foreach (var trigger in scheduleJob.Triggers)
5150
{
52-
if (!(await _scheduler.CheckExists(scheduleJob.JobDetail.Key, cancellationToken) ))
51+
52+
if (isNewJob)
5353
{
54-
await _scheduler.ScheduleJob(scheduleJob.JobDetail, trigger, cancellationToken);
54+
if (!(await _scheduler.CheckExists(scheduleJob.JobDetail.Key, cancellationToken)))
55+
{
56+
await _scheduler.ScheduleJob(scheduleJob.JobDetail, trigger, cancellationToken);
57+
}
5558
}
56-
}
57-
else
58-
{
59-
if (!( await _scheduler.CheckExists(trigger.Key, cancellationToken)))
59+
else
6060
{
61-
await _scheduler.ScheduleJob(trigger, cancellationToken);
61+
if (!(await _scheduler.CheckExists(trigger.Key, cancellationToken)))
62+
{
63+
await _scheduler.ScheduleJob(trigger, cancellationToken);
64+
}
6265
}
66+
isNewJob = false;
6367
}
64-
isNewJob = false;
68+
}
69+
else
70+
{
71+
await _scheduler.AddJob(scheduleJob.JobDetail, true, cancellationToken);
6572
}
6673
}
6774
}

0 commit comments

Comments
 (0)