Quartz-基础
Quartz 是个开源的作业调度框架,为应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务的数据源、全局作业和/或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用程序服务器的上下文或引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;例如,在使用 WebSphere 应用服务器时,由 Quartz 调度的作业并不能影响服务器的动态缓存和数据源。Quartz 作业调度框架所提供的 API 在两方面都表现极佳:既全面强大,又易于使用。Quartz 可以用于简单的作业触发,也可以用于复杂的 JDBC 持久的作业存储和执行。
1. Quartz核心概念:作业和触发器
Quartz 调度包的两个基本单元是作业和触发器。作业 是能够调度的可执行任务,触发器 提供了对作业的调度。虽然这两个实体很容易合在一起,但在 Quartz 中将它们分离开来是有原因的,而且也很有益处。
通过把要执行的工作与它的调度分开,Quartz 允许在不丢失作业本身或作业的上下文的情况下,修改调度触发器。而且,任何单个的作业都可以有多个触发器与其关联。
2. Quartz使用示例:
Quartz基本操作步骤:
- Create a SchedulerFactory
- Create a Scheduler
- Create a JobDetail
- Create a Trigger
- Schedule the Job (with the detail and the trigger)
注:需要引用:Quatz.dll和CommonLogging.dll
ISchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = factory.GetScheduler(); JobDetail job = new JobDetail("testjob", "jobgroup", typeof(ShifNotify)); Trigger tigger = TriggerUtils.MakeSecondlyTrigger(2); tigger.StartTime = DateTime.Now; tigger.Name = "ShiftNotify"; scheduler.ScheduleJob(job, tigger); scheduler.Start(); Thread.Sleep(1000*6); sched.Shutdown();
其中ShifNotify基本定义为:
public class ShifNotify : IJob { public void Execute(JobExecutionContext context) { Console.WriteLine("Nofity executed!"); } }