Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石英+;Spring:使用JobStore将作业配置为在特定时间运行_Java_Spring_Quartz Scheduler - Fatal编程技术网

Java 石英+;Spring:使用JobStore将作业配置为在特定时间运行

Java 石英+;Spring:使用JobStore将作业配置为在特定时间运行,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,我正在试用Quartz调度器,并使用Maven使其与Spring一起工作 我需要做的是将Quartz配置为存储作业,以便在计划的时间内执行作业。据我所知,Quartz中有两种类型的触发器,Simple和Cron。我还发现石英中有一种叫做JobStore的东西。我在某种程度上配置了它 有人能给我一个很好的关于如何设置Quartz,JobStore的参考资料吗?非常感谢您的帮助。您可以查看这些链接 如果您仍然无法理解,请让我知道给您另一个选择,您是否尝试过Spring的任务调度?。现在,我改变了我

我正在试用Quartz调度器,并使用Maven使其与Spring一起工作

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


有人能给我一个很好的关于如何设置Quartz,JobStore的参考资料吗?非常感谢您的帮助。

您可以查看这些链接


如果您仍然无法理解,请让我知道

给您另一个选择,您是否尝试过Spring的任务调度?。现在,我改变了我所有的老石英工作,这是更容易配置,你可以使用注释


您通常会从factory类创建一个
调度程序。石英可以通过多种方式进行设置

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

  • 通过将配置指定为
    quartz.properties
    文件中的键值对,并将其加载到
    org.quartz.impl.StdSchedulerFactory(java.lang.String文件名).getScheduler()

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

  • 通过使用spring框架中的
    spring上下文支持
    jar,并使用更高级别的抽象,例如
    org.springframework.scheduling.quartz.SchedulerFactoryBean

  • 等等

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

    带弹簧的自举石英示例 上面的bean定义足以执行以下配置:-

  • JobFactory-默认值是Spring的
    org.springframework.scheduling.quartz.AdaptiableJobFactory
    ,它支持
    java.lang.Runnable
    对象以及标准quartz
    org.quartz.Job
    实例
  • ThreadPool-默认为Quartz
    org.Quartz.siml.SimpleThreadPool
    ,池大小为10。这是通过相应的石英属性配置的
  • SchedulerFactory—此处使用的默认值是
    org.quartz.impl.StdSchedulerFactory
    ,从
    quartz.jar
    读取标准
    quartz.properties
  • JobStore-使用的默认值是
    org.quartz.siml.RAMJobStore
    ,它不支持持久性,也不群集
  • 生命周期-
    org.springframework.scheduling.quartz.SchedulerFactoryBean
    实现
    org.springframework.context.SmartLifecycle
    org.springframework.beans.factory.DisposableBean
    ,这意味着调度器的生命周期由Spring容器管理。初始化后,在
    SmartLifecycle
    start()
    实现中调用
    org.quartz.Scheduler#start()
    ,在应用程序拆卸时在
    DisposableBean
    实现中调用
    org.quartz.Scheduler#shutdown()
    。 通过设置
    org.springframework.scheduling.quartz.SchedulerFactoryBean().setAutoStart(false)
    ,可以覆盖启动行为。使用此设置,您必须手动启动计划程序
  • 调用org.springframework.scheduling.quartz.SchedulerFactoryBean上的各种setter方法可以覆盖所有这些默认设置


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

    谢谢。我在上下文文件中添加了作业、触发器和调度所需的bean。我已经使用Quartz发行版附带的脚本创建了一个数据库。在上下文文件的ScheduleFactory bean中设置必要的属性。它抛出一个异常,说org.quartz.impl.jdbcjobstore.LockException:Failure Getting db row lock:SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,了解使用near'(UPDLOCK,ROWLOCK)的正确语法,其中SCHED_NAME='org.springframework.scheduling.quartz.Sche'位于第1行。此错误表示“org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbjobstore.StdJDBCDelegate”,您可以使用其他数据库委托进行配置,例如,mssqlthankyou@paul将对此进行检查。我在Quartz上写了一篇博客文章,它使用REST API来调度作业,并使用liquibase来管理数据库迁移。
    @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;
        }
    }