c# – 如何使用Quartz调度程序维护作业历史记录

c# – 如何使用Quartz调度程序维护作业历史记录,第1张

概述我想保留由Quartz调度程序安排的作业历史记录,其中包含以下属性:“开始时间”,“结束时间”,“成功”,“错误”. 有两个可用的接口:ITriggerListener和IJobListener(我使用C#命名约定的接口,因为我使用Quartz.NET,但是可以问相同的问题的Java版本). IJobListener有一个JobToBeExecuted和一个JobWasExecuted方法.后者提 我想保留由Quartz调度程序安排的作业历史记录,其中包含以下属性:“开始时间”,“结束时间”,“成功”,“错误”.

有两个可用的接口:ITriggerListener和IJobListener(我使用C#命名约定的接口,因为我使用Quartz.NET,但是可以问相同的问题的Java版本).

IJobListener有一个JobToBeExecuted和一个JobWasExecuted方法.后者提供了一个JobExecutionException,以便您知道何时发生错误.但是,没有办法将JobToBeExecuted和JobWasExecuted进行关联.假设我的工作运行了十分钟.我在t0和t0 2开始(所以它们重叠).我收到JobToBeExecuted的两个调用,并将两个开始时间插入到我的历史记录表中.当两个作业在t1和t1 2完成时,我得到JobWasExecuted的两个调用.如何知道每次呼叫中要更新的数据库记录(存储结束时间及其相应的开始时间)?

ITriggerListener还有另一个问题.当作业失败时,无法在TriggerComplete方法内获取任何错误.

如何获得所需的行为?

解决方法 执行此 *** 作的方法是在JobToBeExecuted中生成标识符,将其存储在JobExecutionContext中,并从JobWasExecuted中的JobExecutionContext重新检索.
public voID JobToBeExecuted(JobExecutionContext context){    // Insert history record and retrIEve primary key of inserted record.    long historyID = InsertHistoryRecord(...);    context.Put("HistoryIDKey",historyID);}public voID JobWasExecuted(JobExecutionContext context,JobExecutionException jobException){    // RetrIEve history ID from context and update history record.    long historyID = (long) context.Get("HistoryIDKey");    UpdateHistoryRecord(historyID,...);}
总结

以上是内存溢出为你收集整理的c# – 如何使用Quartz调度程序维护作业历史记录全部内容,希望文章能够帮你解决c# – 如何使用Quartz调度程序维护作业历史记录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存