I've got a .NET Core 3 worker service that uses Quartz.NET to schedule jobs. In this cut down example I have a single job with a single trigger. It doesn't seem to run and I don't get any exceptions.
- How do I debug Quartz.NET and get a list of jobs and triggers?
- Why isn't the job in the example below running?
I've tried creating the job and trigger within a group and without a group with no effect.
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly ISchedulerFactory _schedulerFactory;
public Worker(ILogger<Worker> logger, ISchedulerFactory schedulerFactory)
{
_logger = logger;
_schedulerFactory = schedulerFactory;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
NameValueCollection props = new NameValueCollection
{
{ "quartz.serializer.type", "binary" }
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
IScheduler schedulder = await factory.GetScheduler().ConfigureAwait(false);
await schedulder.Start().ConfigureAwait(false);
var pingJob = JobBuilder.Create<PingJob>()
.WithIdentity("ping-job")
.Build();
ITrigger pingJob1Trigger = TriggerBuilder.Create()
.WithIdentity("ping-job")
.WithSimpleSchedule(x => x
.WithInterval(TimeSpan.FromSeconds(1))
.RepeatForever())
.StartNow()
.Build();
await schedulder.ScheduleJob(pingJob, pingJob1Trigger, stoppingToken).ConfigureAwait(false);
}
}
The job:
public class PingJob : IJob
{
private readonly ILogger<PingJob> _logger;
public PingJob(ILogger<PingJob> logger)
{
_logger = logger;
}
public async Task Execute(IJobExecutionContext context)
{
_logger.LogInformation("Ping");
await Task.CompletedTask;
}
}