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

quartz-scheduler阶段性总结 1

阅读更多


    在阐述quartz是个什么东西之前,我先说个事。很多时候,我们经常在台历上标注出,某一天是某人的生日,某一天有某个重要的事情,给自己一个提醒。一个台历加上所要做的事情的内容,就是一个scheduler。计算机系统,是帮助人们完成既定事务的。所以,我们希望,把“日程规划+具体事务”,交给系统,系统就能按照我们的要求自动去工作。
    好了,quartz就是这么一个东西。我们只需要定义好时间表,并对应指定的操作,它就能够按照我们的要求在指定时间驱动指定的工作,如此简单。不过中文网站能够找到的东西太有限了,推荐取opensymphony的官方网站,以及该网站的quartz论坛,地址是::URL::http://forums.opensymphony.com/category.jspa?categoryID=8。另外推荐一个java的blog:http://www.blogjava.net/javaora/。惊奇的发现,这个人所研究的和我现在研究的一模一样。

    这个总结着重总结job的内容。
    quartz中,所有需要驱动的工作,都是实现job接口的类。job接口很简单,就只有一个excute()方法,只要把这个类交给quartz,它就会自动去执行这个方法。方法里面定义的就是我们真正需要进行的工作,恩,这都没有什么问题。
    现在的问题在于,很多时候我们需要执行的工作类,是外部类,并没有继承job接口。也就是说,我们希望quartz能够驱动任意的类的任意方法,这该怎么办?这也是我第一阶段的一个小目标。

    一开始我想改变quartz的驱动方式,也就是改变runshell里面的东西,后来发现,这太复杂了,这是quartz最核心的东西,动一发而牵全身。我只是想利用quartz的优势,并不想大规模的改动。
    走了不少弯路之后,想了一个不错的方案。就是,我们只需要定义好所需要的类名、方法名、方法需要的参数,然后利用reflect,来实例化类,然后invoke指定方法。而把这些工作放在一个通用的job模板中的excute方法,这样,我们只需要把指定参数传入这个通用job模板,然后直接驱动此job就能实现我们上面的目标。
    参数传递采用的方案是:
    1、数据源。把我们需要指定的信息以配置文件的方式给出,主要是,工作组、工作名、工作对应的类,指定的方法,所需的参数。
    2、数据传递。写一个metadata用来包装这些信息,这样做是为了将来管理的方便。然后用metadata来初始化jobdetail,重写工作组、工作名,将类信息保存在jobDataMap中,然后在执行excute的时候,再把这些信息取出来。
    3、工作执行。利用reflect技术,执行指定类的指定方式。
    4、数据返回。excute结束之前,把需要返回的数据放在jobDataMap中,scheduler结束之前,把这些数据从jobDataMap中取出来。
    完美的方案,开心一下!

    下一步研究quartz的另外一个大部分 时间表。
分享到:
评论

相关推荐

    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

    6. 启动Scheduler:在Spring的初始化阶段,SchedulerFactoryBean会自动启动Scheduler,准备执行Job。 在集群环境中,Quartz与Spring的集成需要考虑任务的一致性和并发问题。Quartz提供了Clustered Scheduler的功能...

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

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

    springmvc中实现quartz定时任务

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

    quartz与spring集成

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

    Quartz和Spring整合

    4. 启动Scheduler:在Spring的初始化阶段,SchedulerFactoryBean会自动启动Scheduler,开始调度任务。 实际应用中,我们可能会遇到一些常见问题,例如: - 任务并发执行:Quartz默认情况下,同一Job实例可能会被多...

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

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

    spring+quartz定时器

    6. **启动Scheduler**:在Spring应用的启动阶段,通过`SchedulerFactoryBean`启动Scheduler,开始执行定时任务。 通过这样的集成,你可以利用Spring的强大功能来管理Job的生命周期,同时利用Quartz的灵活性来定义...

    Spring+quartz定时.zip

    1. **引入依赖**:在项目中添加Quartz和Spring相关的依赖库,确保Spring MVC和Quartz的jar包或者对应的Maven/Gradle依赖已经配置好。 2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中声明...

    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

    1. **Quartz简介**:Quartz是Cron-like作业调度库,设计用于在Java应用程序中实现任务调度。它提供了强大的API,允许开发者创建、调度和管理任务。Quartz可以处理简单到复杂的任务调度需求,包括触发基于时间的事件...

    Quartz定时任务完全攻略

    启动Scheduler通常在应用初始化阶段调用`SchedulerFactory.getScheduler().start()`。 四、API使用 1. 创建Job:使用`JobBuilder.newJob(JobClass.class).build()`创建Job实例,其中JobClass是你自定义的任务类。 2...

    java quartz sping 结合

    1. **集成Quartz与Spring**:在Spring的配置文件中,声明Quartz的相关bean,如SchedulerFactoryBean,用于创建和管理Scheduler实例。 2. **定义Job类**:创建自定义的Job类,实现`org.quartz.Job`接口,并重写`...

    Quartz实现阶梯式任务调度

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

    quartz2 与spring4 集成 定时任务Job

    6. **启动Scheduler**:在Spring的初始化阶段,SchedulerFactoryBean会自动启动Scheduler,使所有配置的任务生效。 7. **监控与管理**:一旦集成完成,你可以通过Spring的管理接口或者Quartz提供的JMX支持来监控和...

    boot-14-quartz:开机14石英

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

Global site tag (gtag.js) - Google Analytics