Quartz-基础

Quartz 是个开源的作业调度框架,为应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务的数据源、全局作业和/或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用程序服务器的上下文或引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;例如,在使用 WebSphere 应用服务器时,由 Quartz 调度的作业并不能影响服务器的动态缓存和数据源。Quartz 作业调度框架所提供的 API 在两方面都表现极佳:既全面强大,又易于使用。Quartz 可以用于简单的作业触发,也可以用于复杂的 JDBC 持久的作业存储和执行。

1. Quartz核心概念:作业和触发器

Quartz 调度包的两个基本单元是作业和触发器。作业 是能够调度的可执行任务,触发器 提供了对作业的调度。虽然这两个实体很容易合在一起,但在 Quartz 中将它们分离开来是有原因的,而且也很有益处。

通过把要执行的工作与它的调度分开,Quartz 允许在不丢失作业本身或作业的上下文的情况下,修改调度触发器。而且,任何单个的作业都可以有多个触发器与其关联。

2. Quartz使用示例:

Quartz基本操作步骤:

  1. Create a SchedulerFactory
  2. Create a Scheduler
  3. Create a JobDetail
  4. Create a Trigger
  5. 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!");
  }
}

 

参考:http://www.ibm.com/developerworks/cn/java/j-quartz/

posted @ 2013-08-02 18:02  swzhou  阅读(285)  评论(0编辑  收藏  举报