我有一个运行在 .NET 6 控制台应用程序上的 Quartz.NET 托管服务。它使用
Quartz.Extensions.Hosting
版本 3.6.2.
我可以在我的笔记本电脑上成功地在本地安排和运行作业,没有任何问题。但是当它部署在生产环境的 docker 容器中时,作业会在预定时间触发,但恰好在 11 秒后,整个 .NET 控制台应用程序会重新启动。没有异常被记录,就好像之前运行的服务消失得无影无踪。但是,7 个计划作业中有一个作业可以毫无问题地运行完成。这是其中一项工作的
IJob
实施:
DailyEmailJob.cs
[DisallowConcurrentExecution]
public class DailyEmailJob : IJob
{
private readonly ILogger<DailyEmailJob> _logger;
public DailyEmailJob(ILogger<DailyEmailJob> logger)
{
_logger = logger;
}
public async Task Execute(IJobExecutionContext context)
{
try
{
_logger.LogInformation("DailyEmailJob is starting");
//Send emails
_logger.LogInformation("DailyEmailJob is completed");
}
catch(Exception ex)
{
_logger.LogError(ex, "DailyEmailJob failed");
}
}
}
服务在完全重启控制台应用程序之前记录
DailyEmailJob is starting
消息,即使在 .NET 级别也不会抛出任何异常。如果电子邮件逻辑有问题,我希望 catch 块记录原因,但日志中没有任何内容。
知道为什么会这样吗?