当前位置: 首页 > 知识库问答 >
问题:

作业构造函数引发异常后从触发器错误状态恢复?

谷翰飞
2023-03-14

使用Quartz.NET调度作业时,我偶尔会在实例化作业时收到异常。这又会导致Quartz将作业的触发器设置为错误状态。当发生这种情况时,触发器将停止触发,直到出现一些手动干预(重新启动服务,因为我使用的是内存中的作业调度)。

    null

共有1个答案

汪阿苏
2023-03-14

为了记录在案,我认为这是石英的设计缺陷。如果一个作业不能构造一次,那并不意味着它不能总是构造。这是一个暂时的错误,应该这样处理。停止所有未来预定的工作违反了最小惊讶的原则。

无论如何,我的黑客解决方案是捕捉任何由我的作业构造造成的错误,而不是抛出错误或返回null,而是返回一个自定义的IJob,而不是简单地记录一个错误。这并不完美,但至少它不会阻止将来触发该工作。

public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
    try
    {
        var job = this.container.Resolve(bundle.JobDetail.JobType) as IJob;
        return job;
    }
    catch (Exception ex)
    {
        this.logger.Error(ex, "Exception creating job. Giving up and returning a do-nothing logging job.");
        return new LoggingJob(this.logger);
    }
}
 类似资料:
  • 问题内容: 如何从枚举构造函数中引发异常?例如: 产生错误 未处理的异常类型IOException 问题答案: 由于实例是在静态初始化程序中创建的,因此请抛出ExceptionInInitializerError。

  • 问题内容: 我有一个脚本,可以使用令牌远程触发Jenkins上的作业。这是我的脚本: 运行它之后,我得到以下响应: 我注意到它返回标题中的队列URL:http : //jenkins.myserver.com/jenkins/queue/item/91。但我不知道该如何使用此返回URL。 1)我想知道是否有人知道如何检查我刚刚创建的工作的状态? 2)由于上述回应并未传回工作编号,因此我无法真正使用

  • 问题内容: 允许构造函数抛出异常吗? 问题答案: 是的,构造函数可以引发异常。通常,这意味着新对象可以立即进行垃圾回收(当然,尽管一段时间内可能不会收集到)。如果“半构造”对象在构造函数中较早可见(例如,通过分配静态字段或将其自身添加到集合中),则可能会留下痕迹。 在构造函数中引发异常时要注意的一件事:由于调用者(通常)将无法使用新对象,因此构造函数应注意避免获取非托管资源(文件句柄等),然后引发

  • 我有一个静态的方法,用于从PDF中获取标题,使用元数据通过itext,这是一个主要任务的一小部分。 我注意到一条令人费解的路径,我将其缩小到这段代码。具体来说,在我实例化PdfReader的行中,该过程不会抛出异常或继续到print语句。事实上,它清除了我所有的for循环,直到我的程序的顶层,并表现得好像什么都没发生,我的任务完成了。 除非我弄错了,否则在我的方法中执行这组代码时,“Reader实

  • -----------这是我的文件服务---------------------我使用的是spring boot 2.2.2 -------这是我的文件控制器-------- 进程已完成,退出代码为%1