`
flyinglife
  • 浏览: 132393 次
社区版块
存档分类
最新评论

quartz-scheduler阶段性总结 2

阅读更多

                 quartz的一些基本概念
    Job 与 JobDetail
    Job是quartz中最基本的概念了,Job做为一个接口只有一个execute()方法等待实现,理论上所有用quartz执行的job都需要实现这个接口,但是现在大多数的系统都不会服从这种约束,而希望能够更自由的调用原有系统中的类的方法。实现自由调用,有两个途径,我上一节总结中的那个方案是一个简单的途径,另外一个途径就是借助于spring的class bean,这个将在后面介绍。
    StatefullJob接口: 无状态任务对应的JobDataMap可以认为是只读的,而有状态的任务在多次执行过程中保留对JobDataMap所作的修改,一个后果是有状态任务无法被并发执行。上面这句话是抄袭的,事实上我还是不是很清楚二者究竟的区别?
    
    JobDetail是用来包装Job实例的具体细节的。Job以class的方式传入JobDetail,quartz会自动实例化Job类的。同时需要规定job的name和group,在jobdetail的validate()下,一个job是必须有name和group属性,并且二者组合标示唯一的job。JobDetail中的一些重要数据存放在JobDataMap中,这个map可以用来在控制程序和job内传递需要传递的参数。
    JobDetail还有三个重要的boolean值的属性,分别是durability、volatility、shouldRecover。这三个属性默认是false,主要在数据库操作的时候起作用。

    Trigger时间调度
    相对于job,trigger简单一些。所谓的时间调度,就是设置job执行的时间表。Trigger主要分为SimpleTrigger和CronTrigger两大类。前者主要是以1/1000
为单位的简单时间,可是设置startTime、endTime、repeatCount、repeatInterval等主要参数。CronTrigger的详细用法参看quartz文档的的CronTriggers Tutorial。
    scheduler.schedulerJob(jobDetail, trigger);将JobDetail和对应的Trigger部署到scheduler中,然后根据trigger的定义,自动执行指定job。
    Calendar这个类用来标识出特殊的时间,scheduler根据trigger执行job的时候,如果遇到这些标识出的特殊时间则不执行job。Calendar具体的接口有BaseCalendar、AnnualCalendar、HolidayCalendar、MonthlyCalendar、WeeklyCalendar等等。calendar的具体用法参看quartz的文档。
    Misfire Instruction....设定当trigger错过了触发时刻的时候需要采取的处理策略
    TriggerUtils相当于一个trigger factory,方便我们取得特殊trigger的实例,而不用自己去构造。

    Listener是用来监听quartz的执行过程的,主要有JobListener,TriggerListener,SchedulerListener。joblistener监听一个job在quartz中执行的待执行,禁止执行,执行完毕三个状态。TriggerListener监听trigger触发、完成、错过、禁止四个状态。SchedulerListener监听scheduler执行过程的一些状态,具体参看SchedulerListener的源代码。
分享到:
评论

相关推荐

    Quartz-ThreadLocal.rar

    2. **调度器**:调度器(Scheduler)是 Quartz 的核心组件,负责管理作业和触发器,根据触发器的时间规则执行作业。 3. **持久化支持**:Quartz 支持将作业和触发器存储到数据库或其他持久化存储中,确保在服务器...

    quartz通过cron实现web项目定时器

    4. **初始化Scheduler**:在Web应用的初始化阶段,如`ServletContextListener`的`contextInitialized()`方法内,获取Scheduler实例并注册Job和Trigger。 5. **启动Scheduler**:通过`scheduler.start()`启动调度器...

    quartz与spring

    2. 配置Quartz:在Spring的配置文件中定义SchedulerFactoryBean,配置相关的Quartz属性,如Job存储、Trigger存储等。 3. 定义Job:创建Job类实现`org.quartz.Job`接口,定义具体要执行的任务逻辑。 4. 创建Trigger:...

    一个简单的quartz版helloWorld示例演示

    在实际开发中,Quartz的灵活性和强大功能使其成为处理复杂定时任务的理想选择。它可以用于各种场景,比如定期备份数据、发送邮件通知、执行维护任务等。通过深入理解Quartz的工作原理和配置方式,我们可以创建出满足...

    springmvc中实现quartz定时任务

    6. **启动Scheduler**:在Spring的初始化阶段,确保Scheduler被启动,这样Quartz就会按照配置开始工作。 ```xml <bean id="initScheduler" class="org.springframework.scheduling.quartz....

    Quartz和Spring整合

    2. 配置Quartz:在Spring的配置文件中,我们需要创建一个SchedulerFactoryBean,设置相关的Quartz属性,如数据源、JobStore类型等。 3. 定义Job和Trigger:Job通常会继承自Spring的`org.springframework.scheduling....

    quartz与spring集成

    Quartz是一款功能强大的开源作业调度框架,常用于Java应用程序中,可以用来安排和执行周期性的任务。Spring是一个全面的企业级应用开发框架,它提供了一种轻量级的依赖注入(DI)容器,使得开发者能够更好地管理和...

    ASP.NET使用Quartz.NET实现定时任务调度

    2. **集群支持**:Quartz.NET可以在多个服务器上分布式部署,确保任务的高可用性和容错性。 3. **持久化能力**:它可以将任务和触发器存储到数据库中,即使服务重启,也能恢复之前的状态。 4. **插件扩展**:Quartz...

    spring+quartz定时器

    2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中,声明一个`SchedulerFactoryBean`,这是Spring提供的一个工厂类,用于创建和管理Quartz的Scheduler实例。 3. **定义Job**:创建一个实现了...

    Spring+quartz定时.zip

    2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中声明Quartz的相关bean,包括`SchedulerFactoryBean`,`JobDetail`,`Trigger`等。`SchedulerFactoryBean`是Spring管理Quartz Scheduler的...

    Quartz作业调度框架

    Quartz还提供了一种机制来管理Job实例,以及如何处理Job的易失性、持久性和可恢复性。Java线程在Quartz中的使用也是理解调度器工作原理的重要方面。Trigger是Quartz中用于定义调度规则的组件,其中CronTrigger是使用...

    Quartz_Common.Logging.rar

    通过使用Common.Logging,你可以在开发阶段选择一种日志记录框架,然后在生产环境中轻松切换到另一种,而不影响代码的稳定性。 Quartz.dll是Quartz.NET的主要库,包含了所有核心的调度和作业执行功能。而Common....

    FreePay_Quartz_aug_2008-源码.rar

    2. **源码学习价值**:分析FreePay_Quartz_aug_2008的源码,开发者可以学习到如何配置和实例化Scheduler,创建JobDetail(代表工作)和Trigger(触发器)对象,以及如何将它们关联起来。同时,还能理解Quartz的线程...

    Quartz定时任务完全攻略

    2. 分布式调度:通过集群配置,多个Scheduler实例可以共享任务,提高系统扩展性。 3. 回调机制:Job可以监听自身的执行状态,如`@Override public void execute(JobExecutionContext context) throws ...

    quartz2 与spring4 集成 定时任务Job

    将Quartz2集成到Spring4中,可以方便地管理和执行定时任务,无需在代码中直接管理Scheduler实例,而是通过Spring配置来定义和控制Job。 集成Quartz2和Spring4的过程主要包括以下几个步骤: 1. **引入依赖**:首先...

    java quartz sping 结合

    5. **启动Scheduler**:在Spring的初始化阶段启动Scheduler,使得所有的Job和Trigger生效。 6. **日志管理**:在Job的execute方法中添加日志记录,以便追踪任务的执行情况。 7. **部署与运行**:将整个项目打包成JAR...

    Quartz实现阶梯式任务调度

    这种调度方式有助于避免一次性处理大量任务可能带来的系统压力,同时可以根据不同阶段的反馈调整任务执行策略。 首先,我们需要了解Quartz中的核心概念: 1. **Job**:代表一个任务,包含任务的具体逻辑。 2. **...

    boot-14-quartz:开机14石英

    在Quartz项目中,我们可以通过编写JUnit测试用例来验证Job的正确性和Scheduler的可靠性。 总的来说,"boot-14-quartz"项目涉及了Spring Boot与Quartz的集成,用于构建一个能够自启动并按计划执行任务的系统。项目中...

Global site tag (gtag.js) - Google Analytics