zoukankan      html  css  js  c++  java
  • Quartz.NET 2.0 学习笔记(1) :Quartz.NET简介

    Quartz.NET 项目地址 http://quartznet.sourceforge.net/

    Quartz.NET 2.0 学习笔记(1) :Quartz.NET简介

    Quartz.NET 2.0 学习笔记(2) :和1.0的几点不同

    Quartz.NET 2.0 学习笔记(3) :通过配置文件实现任务调度

    Quartz.NET 2.0 学习笔记(4) :cron表达式

    Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.10。

         Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!。简单地创建一个实现org.quartz.Job接口的java类。Job接口包含唯一的方法: 

      public void execute(JobExecutionContext context) 

      throws JobExecutionException; 

      在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表,Quartz将密切注意剩余时间。当调度程序确定该是通知你的作业的时候,Quartz框架将调用你Job实现类(作业类)上的execute()方法并允许做它该做的事情。无需报告任何东西给调度器或调用任何特定的东西。仅仅执行任务和结束任务即可。如果配置你的作业在随后再次被调用,Quartz框架将在恰当的时间再次调用它。

         Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。

      2012年4月9日 Quartz.NET 2.0发布了Released版,对应于Java Quartz的2.1版本,下载地址 http://quartznet.sourceforge.net/download.html 。整个版本相对于1.0版本进行了大量的修改,单元测试的代码更友好(重构了更多的接口),API是基于泛型和.NET 3.5 SP1之后的特性,例如DateTimeOffset。这是Quartz.NET 有史以来最大的、最值得兴奋的一个版本。

    该版本除了在性能上有所提升外,增加了如下新特性:

    • Scheduler.Clear() 提供方便用于清除所有任务、触发器和日程的方法
    • Scheduler.ScheduleJobs((IDictionary> triggersAndJobs, boolean replace) 方法可批量增加任务和触发器
    • Scheduler.UnscheduleJobs(IList triggerKeys) 方法提供批量取消任务的
    • Scheduler.DeleteJobs(IList jobKeys),不用说,这是批量删除任务的
    • Scheduler.CheckExists(JobKey jobKey) 和 Scheduler.CheckExists(TriggerKey triggerKey)提供用于检测任务关键字的唯一性
    • AdoJobStore allows one set of tables to be used by multiple distinct scheduler instances
    • AdoJobStore is now capable of storing non-core Trigger implementations without using BLOB columns, through the use of the new TriggerPersistenceDelegate interface, which can (optionally) be implemented by implementers of custom Trigger types.
    • Cron 表达式支持指定每月的最后一天和最后一周,例如 L-3 为每月的最后三天
    • 包含调度信息的 XML 文件增加了用来指定启动时间和间隔时间的方法
    • XML 文件支持为触发器指定 priority 属性
    • 增加核心任务 DirectoryScanJob ,之前的FileScanJob 添加了一个迷你mum age参数

    2.0在API上也做了重大的修改,API返回值的集合和泛型的使用,消除歧义和冗余代码,掩藏/删除不应该公开给客户端的方法,提高关注点分离,并引入与领域特定语言DSL的核心实体(jobs and triggers),自然就有了兼容性等问题,我们现在来看下都有哪些重大的修改:

    • 不在支持.NET 1.1和2.0,需要Quartz.net 2.0至少需要.NET 3.5 SP1,是由于采用了新的语言特性和类接口
    • 许多公共接口的返回值Array更改为泛型的IList和ISet,例如GetJobGroupNames(): string[] 现在更改为 GetJobGroupNames(): IList ,现在用来标识Jobs和Triggers 现在是基于JobsKey和TriggersKey,Keys 包含一个Name和一个Group。操作特定jobs/triggers 的方法使用Keys作为参数。例如GetTrigger(TriggerKey key): ITrigger 替换了GetTrigger(string name, string group): Trigger,ITrigger现在是一个接口而不是类。ISimpleTrigger, ICronTrigger也一样。新的 DSL/builder-based API 组织Jobs和Triggers。

         IJobDetail job = JobBuilder.Create<SimpleJob>() .WithIdentity("job1", "group1") .Build();

         ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(DateBuilder.FutureDate(2, IntervalUnit.HOURS)) .WithSimpleSchedule(x => x.RepeatHourlyForever()) .ModifiedByCalendar("holidays") .Build();

    • JobInitializationPlugin 已经移除,用XMLSchedulingDataProcessorPlugin替代
    • Microsoft's Oracle drivers已经不再支持,使用10g 或者 11g ODP.NET drivers替代
    • 数据库的Sechema已经修改,需要使用database目录下的脚本吧1.x的Schema升级到2.0

    参考文章:

    该文章主要内容来自

    http://www.cnblogs.com/topcoder/archive/2012/02/22/2362819.html

    http://www.cnblogs.com/shanyou/archive/2011/10/15/2213636.html

  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/lzrabbit/p/2447609.html
Copyright © 2011-2022 走看看