Quartz + Spring:使用JobStore配置作业在特定时间运行

时间:2015-06-20 13:49:38

标签: java spring quartz-scheduler

我正在尝试使用Quartz调度程序并设法使用Maven来使用Spring。

我需要做的是配置Quartz来存储作业,以便在预定的时间内执行作业。据我所知,Quartz,Simple和Cron中有两种类型的触发器。我还发现在Quartz中有一个名为JobStore的东西。我在某种程度上配置了它。

有人可以就如何设置Quartz,JobStore给我一个很好的参考/参考吗?很大的帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

您可以查看这些链接 Quartz JobStore with Spring Framework http://trimplement.com/using-spring-and-quartz-with-jobstore-properties/

如果您仍然无法弄明白,请告诉我

答案 1 :(得分:0)

为了给你另一个选择,你试试Spring的任务调度吗?现在我为此更改了所有旧的Quartz作业,并且更容易配置,您可以使用注释。

http://spring.io/blog/2010/01/05/task-scheduling-simplifications-in-spring-3-0/

答案 2 :(得分:0)

您通常会从工厂类创建Scheduler。 Quartz可以通过多种方式设置。

  1. 使用org.quartz.impl.StdSchedulerFactory.getDefaultScheduler()。如果您没有提供自己的文件,这将在Quartz发行版中加载quartz.properties文件。

  2. 将您的配置指定为quartz.properties文件中的键值对,然后将其加载到org.quartz.impl.StdSchedulerFactory(java.lang.String fileName).getScheduler()

  3. java.util.Properties中的配置指定为键值对,并将其加载到org.quartz.impl.StdSchedulerFactory(java.util.Properties props).getScheduler()

  4. 使用Spring Framework中的spring-context-support jar并使用更高级别的抽象,例如org.springframework.scheduling.quartz.SchedulerFactoryBean

  5. 只有在调用org.quartz.Scheduler#start()时,Quartz才会开始触发作业。在调用此方法之前,Scheduler将处于待机模式 可以通过调用org.quartz.Scheduler#shutdown()来销毁调度程序以释放线程。

    使用Spring引导Quartz的示例

    @org.springframework.context.annotation.Configuration
    public class QuartzExample {
        ...
        @org.springframework.context.annotation.Bean
        public org.springframework.scheduling.quartz.SchedulerFactoryBean schedulerFactory() {
            org.springframework.scheduling.quartz.SchedulerFactoryBean factoryBean = new org.springframework.scheduling.quartz.SchedulerFactoryBean();
            return factoryBean;
        }
    }
    

    上面的bean定义足以执行以下配置: -

    1. JobFactory - 默认为Spring的org.springframework.scheduling.quartz.AdaptableJobFactory,它支持java.lang.Runnable个对象以及标准的Quartz org.quartz.Job实例。
    2. ThreadPool - Default是一个Quartz org.quartz.simpl.SimpleThreadPool,其池大小为10.这是通过相应的Quartz属性配置的。
    3. SchedulerFactory - 此处使用的默认值为org.quartz.impl.StdSchedulerFactory,从quartz.properties读取标准quartz.jar
    4. JobStore - 使用的默认值为org.quartz.simpl.RAMJobStore,它不支持持久性且不是群集。
    5. 生命周期 - org.springframework.scheduling.quartz.SchedulerFactoryBean实现org.springframework.context.SmartLifecycleorg.springframework.beans.factory.DisposableBean,这意味着调度程序的生命周期由Spring容器管理。初始化后org.quartz.Scheduler#start() start()实施中调用SmartLifecycle,并在应用程序拆解时org.quartz.Scheduler#shutdown()执行destroy()时调用DisposableBean 。 您可以通过设置org.springframework.scheduling.quartz.SchedulerFactoryBean().setAutoStartup(false)来覆盖启动行为。使用此设置,您必须手动启动调度程序。
    6. 调用org.springframework.scheduling.quartz.SchedulerFactoryBean上的各种setter方法可以覆盖所有这些默认设置。

      我在Github上提供了一个完整的工作示例。如果您对将作业保存在数据库中的示例感兴趣,请检出同一存储库的HSQLDB分支。