【发布时间】:2021-10-07 10:36:23
【问题描述】:
我有一个带有 Quartz 的 .NET 5 worker 服务,并且我已经准备了一个每天在特定时间执行的作业。但是,作业Execute(IJobExecutionContext context) 方法中发生了异常。并且由于我刚刚在方法中放了一个throw;,服务继续正常工作,但没有重新触发工作。
程序.cs:
services.AddQuartz(properties, options =>
{
options.UseMicrosoftDependencyInjectionScopedJobFactory();
});
services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
DailyJob.cs:
[DisallowConcurrentExecution]
public class DailyJob: IJob
{
private readonly ILogger<DailyJob> _logger
public DailyJob(
ILogger<DailyJob> logger
)
{
_logger = logger;
}
public Task Execute(IJobExecutionContext context)
{
try
{
// DoStuff
}
catch (Exception ex)
{
_logger.LogError(ex, ex.Message);
throw;
}
return Task.CompletedTask;
}
}
现在,我的问题是我是否可以通过立即重新解雇工作来避免这种情况?我已经看到带有参数bool refireImmediately 的类型JobExecutionException,但是如果我抛出那个异常,它会做任何事情吗?它仍然是一个异常,我正在抛出 Execute 方法。
【问题讨论】:
标签: c# .net-core service-worker quartz-scheduler quartz