c# – 如何使用Quartz调度程序维护作业历史记录
发布时间:2020-12-15 04:28:46 所属栏目:百科 来源:网络整理
导读:我想保留由Quartz调度程序安排的作业历史记录,其中包含以下属性:“开始时间”,“结束时间”,“成功”,“错误”. 有两个可用的接口:ITriggerListener和IJobListener(我使用C#命名约定的接口,因为我使用Quartz.NET,但是可以问相同的问题的Java版本). IJobLis
我想保留由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,...); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- cocos2dx 在button回调函数里removeFromParent崩
- 使用C#刮取html文档中JavaScript动态生成的数据
- 编程算法基础-2.5正则表达式进阶
- NandFlash、NorFlash、DataFlash、SDRAM
- Flex实例【Shangle.net】解析【六】
- ruby-on-rails – 为什么首先使用Capistrano运行
- ruby-on-rails – 独立ruby脚本中的Ruby宝石
- c# – .NET JWT令牌验证的命名空间:System vs.
- ExtJs 4.1:如何使用Ext.Ajax.request()在请求体
- ios – 您能否使Xcode 5.1目标依赖关系仅构建有效
热点阅读