Quartz.Net进阶之一:初识Job作业和触发器

     前几天写了一篇有关Quartz.Net入门的文章,大家感觉不过瘾,想让我在写一些比较深入的文章。其实这个东西,我也是刚入门,我也想继续深入了解一下,所以就努力看了一些资料,然后自己再整理和翻译一些,作为学习的历程,就记录下来,希望对大家有帮助。


一、使用 Quartz(Using Quartz)

      在您使用一个调度程序之前,需要实例化一个调度程序的实例。 为此,您需要使用一个实现了ISchedulerFactory接口的子类型。

      一旦调度程序被实例化,它就可以启动,然后处于待机模式,当然也可以关闭。 请注意,一旦调度程序关闭,就不能在不重新实例化的情况下重新启动它。 在调度程序启动之前,触发器不会触发(Job作业也不会执行),也不会在处于暂停状态时触发。

      这是一段简洁的代码片段,用于实例化和启动调度程序,并安排执行Job作业:

      使用 Quartz.NET

复制代码
 1         // construct a scheduler factory 2         NameValueCollection props = new NameValueCollection  3         {  4             { "quartz.serializer.type", "binary" }  5         };  6         StdSchedulerFactory factory = new StdSchedulerFactory(props);  7      8         // get a scheduler 9         IScheduler sched = await factory.GetScheduler(); 10         await sched.Start(); 11     12         // define the job and tie it to our HelloJob class13         IJobDetail job = JobBuilder.Create<HelloJob>() 14             .WithIdentity("myJob", "group1") 15             .Build(); 16 17         // Trigger the job to run now, and then every 40 seconds18         ITrigger trigger = TriggerBuilder.Create() 19             .WithIdentity("myTrigger", "group1") 20             .StartNow() 21             .WithSimpleSchedule(x => x 22                 .WithIntervalInSeconds(40) 23                 .RepeatForever()) 24         .Build(); 25       26         await sched.ScheduleJob(job, trigger);
复制代码


      如您所见,使用Quartz.NET非常简单。

二、Job作业和触发器(Jobs And Triggers)

      1、Quartz API

        Quartz API的关键接口和类是:

             IScheduler - 与调度程序交互的主要API。

             IJob - 希望由调度程序执行的作业实现的接口,或者说Job将要完成的功能。

             IJobDetail - 用于定义Jobs的实例。

             ITrigger - 一个功能组件,用于定义执行给定作业的计划。

             JobBuilder - 用于定义/构建JobDetail实例,用于定义Jobs的实例。

             TriggerBuilder - 用于定义/构建触发器实例。

        在本教程中,为了便于阅读,下面的术语可以互换使用:IScheduler和Scheduler,IJob和Job,IJobDetail和JobDetail,ITrigger和Trigger。

         Scheduler 调度程序实例的生命周期因其被创建而开始,可以通过调用SchedulerFactory类型Shutdown() 方法来结束。 创建后,可以使用IScheduler接口添加、删除和列出作业和触发器,以及执行其他与调度相关的操作(例如暂停触发器)。 但是,在使用Start() 方法启动调度程序之前,调度程序实际上不会执行任何触发器(也不会执行任何作业)。

        Quartz提供了“构建器(Builder)”类,用于定义该领域的特定语言(或DSL,有时也称为“fluent interface”)。在上一节中,您看到了一个示例,我们再次在此处介绍其中的一部分:

复制代码
 1     //定义作业并将其绑定到HelloJob类 2     IJobDetail job = JobBuilder.Create <HelloJob>()  3     .WithIdentity("myJob""
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信