【发布时间】:2019-11-23 11:20:45
【问题描述】:
我有一个 .NET Core 3 辅助服务,它使用 Quartz.NET 来安排作业。在这个精简的示例中,我有一个带有单个触发器的工作。它似乎没有运行,我也没有遇到任何异常。
- 如何调试 Quartz.NET 并获取作业和触发器列表?
- 为什么下面示例中的作业没有运行?
我已尝试在组内创建作业和触发器,而没有组则无效。
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);
}
}
工作:
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;
}
}
【问题讨论】:
标签: c# quartz.net