调度器:
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:
- public class MyJob : IJob
- {
- publicvoid Execute(IJobExecutionContextcontext)
- {
- Console.WriteLine("我执行了,时间:{0}", DateTime.Now);
- }
- }
2.雷同上一节的main函数:
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactorysf = new StdSchedulerFactory();
- ISchedulersched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetailmyJob = JobBuilder.Create<MyJob>()
- .WithIdentity("job1", "group1")
- .Build();
- //触发器
- ITriggertrigger = TriggerBuilder.Create()
- .WithIdentity("trigger1", "group1")
- .WithCronSchedule("0/5 * 18 * * ? ")//这里用的复杂排程调度器
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
3.不一样上一节的运行结果:
结语:下载下来Quartz.Net的例子,发现Quartz实在是太实用了,有简单的任务,有状态job,可以执行远程的job,而且配置也很强大,忍不住想往下学……
代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Quartz.Impl;
- namespace Quartz.Demo
- {
- class MyClass
- {
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("job1", "group1")
- .Build();
- //触发器
- ITrigger trigger = TriggerBuilder.Create()
- .WithIdentity("trigger1", "group1")
- .WithCronSchedule("0/5 * 18 * * ? ")
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- Console.WriteLine("我执行了,时间:{0}", DateTime.Now);
- }
- }
- }
- }
相关推荐
3. **Scheduler(调度器)**:调度器是Quartz的核心,它负责管理和执行所有的作业和触发器。通过调用Scheduler的API,我们可以安排作业的执行、暂停、恢复或删除已有的调度。 在"quartz作业调度demo"中,你可能会...
其中,第二种方式下的作业类仍然是 POJO,具有更好的灵活性和扩展性。 按任务调度的触发时机,Quartz 也可以分为两种:每隔指定时间则触发一次和每到指定时间则触发一次。前者对应的调度器为 org.springframework....
Quartz支持两种类型的作业: - **无状态作业**:每次执行都是独立的,不会保留上下文信息。 - **有状态作业**:支持在多个执行之间共享状态信息,适用于需要跨执行传递数据的场景。 #### 十二、Quartz框架的其他...
#### 二、定时任务触发器分类 ##### 2.1 SimpleTrigger 简单触发器 - **定义**:适用于需要简单触发调度的场景。例如,在给定时间或重复次数下触发作业。 - **特点**: - 支持一次性触发。 - 支持重复触发,可以...
- **启动调度器**:最后启动调度器,作业将根据触发器的规则开始执行。 #### 八、用调度器调用作业 - **直接调用**:通过`Scheduler`的API直接触发作业执行。 - **按计划调用**:定义触发器,并通过触发器按计划...
// 第一个参数是延迟时间,第二个参数是时间单位 executor.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS); } } ``` 这个例子中,任务会在创建后立即开始,并且每5秒执行一次。 以上三种方式都可以实现Java...
这个例子首先通过SchedulerFactory得到调度器(Scheduler)的引用,然后创建作业(Job)和触发器(Trigger),并将触发器和作业关联起来,最后通过调用调度器的方法将作业加入到调度中。其中,SchedulerFactory是一...
3. 高度灵活:Quartz框架支持多种作业调度模式,包括简单触发器、 cron 触发器、 Calendar 触发器等。 4. 广泛的应用场景:Quartz框架可以应用于单机 J2SE 应用、RMI 服务器、Web 应用、J2EE 应用服务器等多种场景。...
2、项目适用人群:计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等计算机相关专业的在校学生、专业老师、行业内企业员工下载使用。 3、项目可用于:项目本身具有较高的学习借鉴...
2. `TriggerListener`:关注触发器(Trigger)的状态变化,比如触发器触发作业前、后以及触发异常时的事件。包含`triggerFired()`、`triggerMisfired()`和`triggerComplete()`等方法。 3. `SchedulerListener`:...
6. **作业运行控制**:`add_job()`函数的第二个参数`trigger`定义了任务的调度方式。`date`触发器用于一次性任务,`interval`触发器用于按固定间隔重复任务,而`cron`触发器则支持复杂的crontab规则。 7. **关闭...
- **调度器(Schedulers)**:调度器是Quartz的核心,负责管理和运行作业和触发器。 2. **Quartz-1.7.3 版本特性**: - **改进与修复**:此版本可能包含了对之前版本中发现的bug的修复,以提高整体稳定性和性能。...
Quartz允许将任务与触发器关联,灵活地控制任务执行。使用Quartz创建任务可能涉及到更多的代码,但它提供了丰富的功能和强大的扩展性。 4. **Spring框架的@Scheduled注解** 如果你正在使用Spring框架,那么`@...
通过这个Demo项目,我们可以学习到如何定义作业类,如何创建触发器,以及如何将它们与调度器(Scheduler)关联起来。源码中可能包含以下几个关键部分: 1. **Job类**:在Quartz.NET中,作业(Job)是一个实现了`...
- 第二部分:分(0-59) - 第三部分:小时(0-23) - 第四部分:日(1-31) - 第五部分:月(1-12) - 第六部分:一周中的哪一天(0-7,其中0和7都代表周日) - 第七部分:年(1970-2199) **示例Demo** Spring...
Quartz是一款开源的作业调度框架,支持复杂的调度策略,如简单触发器、cron触发器和作业链等。它允许开发者创建、调度和管理作业,以及定义触发作业执行的时间规则。 **Spring与Quartz集成** Spring通过`org.spring...
配置`SchedulerFactoryBean`,这是Spring管理Quartz调度器的关键,它负责启动和管理Quartz的生命周期,以及将作业和触发器关联起来。 三、Quartz与Spring的集成 Spring通过`JobDetailBean`和`TriggerBean`简化了...