Java 石英+;Spring:使用JobStore将作业配置为在特定时间运行
我正在试用Quartz调度器,并使用Maven使其与Spring一起工作 我需要做的是将Quartz配置为存储作业,以便在计划的时间内执行作业。据我所知,Quartz中有两种类型的触发器,Simple和Cron。我还发现石英中有一种叫做JobStore的东西。我在某种程度上配置了它Java 石英+;Spring:使用JobStore将作业配置为在特定时间运行,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,我正在试用Quartz调度器,并使用Maven使其与Spring一起工作 我需要做的是将Quartz配置为存储作业,以便在计划的时间内执行作业。据我所知,Quartz中有两种类型的触发器,Simple和Cron。我还发现石英中有一种叫做JobStore的东西。我在某种程度上配置了它 有人能给我一个很好的关于如何设置Quartz,JobStore的参考资料吗?非常感谢您的帮助。您可以查看这些链接 如果您仍然无法理解,请让我知道给您另一个选择,您是否尝试过Spring的任务调度?。现在,我改变了我
有人能给我一个很好的关于如何设置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上下文支持
jar,并使用更高级别的抽象,例如org.springframework.scheduling.quartz.SchedulerFactoryBean
org.Quartz.Scheduler#start()
时,Quartz才会开始触发作业。在调用此方法之前,计划程序将处于待机模式。通过调用
org.quartz.Scheduler#shutdown()
,可以销毁调度程序以释放线程
带弹簧的自举石英示例
上面的bean定义足以执行以下配置:-
org.springframework.scheduling.quartz.AdaptiableJobFactory
,它支持java.lang.Runnable
对象以及标准quartzorg.quartz.Job
实例org.Quartz.siml.SimpleThreadPool
,池大小为10。这是通过相应的石英属性配置的org.quartz.impl.StdSchedulerFactory
,从quartz.jar
读取标准quartz.properties
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)
,可以覆盖启动行为。使用此设置,您必须手动启动计划程序
我提供了一个完整的工作示例。如果您对在数据库中保存作业的示例感兴趣,请签出同一存储库的分支。谢谢。我在上下文文件中添加了作业、触发器和调度所需的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;
}
}