Quartz.NET 主机在作业被解雇时重新启动

问题描述 投票:0回答:0

我有一个运行在 .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 块记录原因,但日志中没有任何内容。

知道为什么会这样吗?

c# console-application .net-6.0 quartz.net
© www.soinside.com 2019 - 2024. All rights reserved.