`
yimeng528
  • 浏览: 188744 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第二节:调度器,触发器与作业

阅读更多

调度器

Quartz.Net中核心的地方就调度器,调度器负责管理Quartz.NET应用运行时环境。

上一节中代码中IScheduler sched = sf.GetScheduler(); 这一句代码看起来简单,其实背后做了好多事情,比如:初始化配置,是使用数据库还是内存,初始化线程池,是否是远程执行job等等,总之挺复杂的。

作业:

目前我的理解就是job,类似于上一节中自定义的MyJob

触发器:

用来告诉调度器作业什么时候触发.

解发器分为:SimpleTriggerImpl,CronTriggerImpl,DailyTimeIntervalTriggerImpl

具体的代码表现就是继承ITrigger这个接口。

如果只是简单的调度作业,比如每隔一小时执行一次哪么简单调度器(SimpleTriggerImpl)完全适合你,

如果您想指定工作日的每天的早上9点执行一个任务,复杂排程调度器(CronTriggerImpl)更为合适大家

 

复杂排程调度器采用Calendar-like表达式,

具体见:点我打表达式

 

例子

比如用复杂排程调度器写一个每天每天下午的 6点到6点59分每隔5s就触发一次的例子

1.雷同上一节的job:

[csharp] view plaincopy
  1. public class MyJob : IJob  
  2.   
  3. {  
  4.   
  5.        publicvoid Execute(IJobExecutionContextcontext)  
  6.   
  7.        {  
  8.   
  9.            Console.WriteLine("我执行了,时间:{0}", DateTime.Now);  
  10.   
  11.        }  
  12.   
  13.  }   


 

2.雷同上一节的main函数:

 

[csharp] view plaincopy
  1. static void Main(string[] args)  
  2.   
  3. {  
  4.   
  5.             //调度器  
  6.   
  7.             ISchedulerFactorysf = new StdSchedulerFactory();  
  8.   
  9.             ISchedulersched = sf.GetScheduler();  
  10.   
  11.    
  12.   
  13.             //job详情,注意MyJob  
  14.   
  15.             IJobDetailmyJob = JobBuilder.Create<MyJob>()  
  16.   
  17.                .WithIdentity("job1""group1")  
  18.   
  19.                .Build();  
  20.   
  21.    
  22.   
  23.             //触发器  
  24.   
  25.             ITriggertrigger = TriggerBuilder.Create()  
  26.   
  27.                 .WithIdentity("trigger1""group1")  
  28.   
  29.                 .WithCronSchedule("0/5 * 18 * * ? ")//这里用的复杂排程调度器  
  30.   
  31.                 .Build();  
  32.   
  33.    
  34.   
  35.             //关联job和触发器  
  36.   
  37.             sched.ScheduleJob(myJob, trigger);  
  38.   
  39.    
  40.   
  41.             //执行  
  42.   
  43.             sched.Start();  
  44.   
  45.    
  46.   
  47.             Console.Read();  
  48.   
  49.    
  50.   
  51.             //关掉  
  52.   
  53.             sched.Shutdown(true);  
  54.   
  55.  }  

 

 

3.不一样上一节的运行结果:

                              

 

结语:下载下来Quartz.Net的例子,发现Quartz实在是太实用了,有简单的任务,有状态job,可以执行远程的job,而且配置也很强大,忍不住想往下学……

 

代码:

[csharp] view plaincopy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using Quartz.Impl;  
  5.   
  6. namespace Quartz.Demo  
  7. {  
  8.     class MyClass  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             //调度器  
  13.             ISchedulerFactory sf = new StdSchedulerFactory();  
  14.             IScheduler sched = sf.GetScheduler();  
  15.   
  16.             //job详情,注意MyJob  
  17.             IJobDetail myJob = JobBuilder.Create<MyJob>()  
  18.                .WithIdentity("job1""group1")  
  19.                .Build();  
  20.   
  21.             //触发器  
  22.             ITrigger trigger = TriggerBuilder.Create()  
  23.                 .WithIdentity("trigger1""group1")  
  24.                 .WithCronSchedule("0/5 * 18 * * ? ")  
  25.                 .Build();  
  26.   
  27.             //关联job和触发器  
  28.             sched.ScheduleJob(myJob, trigger);  
  29.   
  30.             //执行  
  31.             sched.Start();  
  32.   
  33.             Console.Read();  
  34.   
  35.             //关掉  
  36.             sched.Shutdown(true);  
  37.         }  
  38.   
  39.         public class MyJob : IJob  
  40.         {  
  41.             public void Execute(IJobExecutionContext context)  
  42.             {  
  43.                 Console.WriteLine("我执行了,时间:{0}", DateTime.Now);  
  44.             }  
  45.         }  
  46.     }  
  47. }  
分享到:
评论

相关推荐

    quartz作业调度demo

    3. **Scheduler(调度器)**:调度器是Quartz的核心,它负责管理和执行所有的作业和触发器。通过调用Scheduler的API,我们可以安排作业的执行、暂停、恢复或删除已有的调度。 在"quartz作业调度demo"中,你可能会...

    Spring中Quartz调度器的使用

    其中,第二种方式下的作业类仍然是 POJO,具有更好的灵活性和扩展性。 按任务调度的触发时机,Quartz 也可以分为两种:每隔指定时间则触发一次和每到指定时间则触发一次。前者对应的调度器为 org.springframework....

    Quartz调度框架

    Quartz支持两种类型的作业: - **无状态作业**:每次执行都是独立的,不会保留上下文信息。 - **有状态作业**:支持在多个执行之间共享状态信息,适用于需要跨执行传递数据的场景。 #### 十二、Quartz框架的其他...

    spring 执行定时器触发器文档

    #### 二、定时任务触发器分类 ##### 2.1 SimpleTrigger 简单触发器 - **定义**:适用于需要简单触发调度的场景。例如,在给定时间或重复次数下触发作业。 - **特点**: - 支持一次性触发。 - 支持重复触发,可以...

    Quartz如何从入门到精通

    - **启动调度器**:最后启动调度器,作业将根据触发器的规则开始执行。 #### 八、用调度器调用作业 - **直接调用**:通过`Scheduler`的API直接触发作业执行。 - **按计划调用**:定义触发器,并通过触发器按计划...

    java时间触发器配置方法

    // 第一个参数是延迟时间,第二个参数是时间单位 executor.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS); } } ``` 这个例子中,任务会在创建后立即开始,并且每5秒执行一次。 以上三种方式都可以实现Java...

    Quartz(任务调度)使用培训

    这个例子首先通过SchedulerFactory得到调度器(Scheduler)的引用,然后创建作业(Job)和触发器(Trigger),并将触发器和作业关联起来,最后通过调用调度器的方法将作业加入到调度中。其中,SchedulerFactory是一...

    Java框架介绍Quartz从入门到进阶.pdf

    3. 高度灵活:Quartz框架支持多种作业调度模式,包括简单触发器、 cron 触发器、 Calendar 触发器等。 4. 广泛的应用场景:Quartz框架可以应用于单机 J2SE 应用、RMI 服务器、Web 应用、J2EE 应用服务器等多种场景。...

    基于SpringBoot+Quartz的轻量级分布式定时任务调度系统源码+项目说明+sql数据库.zip

    2、项目适用人群:计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等计算机相关专业的在校学生、专业老师、行业内企业员工下载使用。 3、项目可用于:项目本身具有较高的学习借鉴...

    Quartz Job Scheduling Framework第7章翻译初稿

    2. `TriggerListener`:关注触发器(Trigger)的状态变化,比如触发器触发作业前、后以及触发异常时的事件。包含`triggerFired()`、`triggerMisfired()`和`triggerComplete()`等方法。 3. `SchedulerListener`:...

    Python任务调度模块APScheduler使用

    6. **作业运行控制**:`add_job()`函数的第二个参数`trigger`定义了任务的调度方式。`date`触发器用于一次性任务,`interval`触发器用于按固定间隔重复任务,而`cron`触发器则支持复杂的crontab规则。 7. **关闭...

    quartz-1.7.3

    - **调度器(Schedulers)**:调度器是Quartz的核心,负责管理和运行作业和触发器。 2. **Quartz-1.7.3 版本特性**: - **改进与修复**:此版本可能包含了对之前版本中发现的bug的修复,以提高整体稳定性和性能。...

    JAVA定时任务调度

    Quartz允许将任务与触发器关联,灵活地控制任务执行。使用Quartz创建任务可能涉及到更多的代码,但它提供了丰富的功能和强大的扩展性。 4. **Spring框架的@Scheduled注解** 如果你正在使用Spring框架,那么`@...

    Quartz.NET Demo 项目源码

    通过这个Demo项目,我们可以学习到如何定义作业类,如何创建触发器,以及如何将它们与调度器(Scheduler)关联起来。源码中可能包含以下几个关键部分: 1. **Job类**:在Quartz.NET中,作业(Job)是一个实现了`...

    quartz与spring集成

    - 第二部分:分(0-59) - 第三部分:小时(0-23) - 第四部分:日(1-31) - 第五部分:月(1-12) - 第六部分:一周中的哪一天(0-7,其中0和7都代表周日) - 第七部分:年(1970-2199) **示例Demo** Spring...

    定时调度-Spring集成Quartz

    Quartz是一款开源的作业调度框架,支持复杂的调度策略,如简单触发器、cron触发器和作业链等。它允许开发者创建、调度和管理作业,以及定义触发作业执行的时间规则。 **Spring与Quartz集成** Spring通过`org.spring...

    Java Spring中Quartz调度器详解及实例

    配置`SchedulerFactoryBean`,这是Spring管理Quartz调度器的关键,它负责启动和管理Quartz的生命周期,以及将作业和触发器关联起来。 三、Quartz与Spring的集成 Spring通过`JobDetailBean`和`TriggerBean`简化了...

Global site tag (gtag.js) - Google Analytics