Spring Boot 参考指南(Quartz Scheduler)

39. Quartz Scheduler

Spring Boot为使用Quartz Scheduler提供了一些方便,引入spring-boot-starter-quartz“启动器”,若是Quartz是可用的,则将自动配置Scheduler(经过抽象的SchedulerFactoryBean)。spring

下列类型的bean将自动被拾取并与Scheduler关联:数据库

  • JobDetail:定义一个特定的工做,JobDetail实例能够使用JobBuilder API构建。
  • Calendar
  • Trigger:定义什么时候触发特定工做。

默认状况下,使用内存中的JobStore,可是,若是应用程序中有DataSource bean而且spring.quartz.job-store-type属性已经相应地配置,那么能够配置基于jdbc的存储,以下面的示例所示:编程

spring.quartz.job-store-type=jdbc

当使用JDBC存储时,能够在启动时初始化schema,以下例所示:segmentfault

spring.quartz.jdbc.initialize-schema=always
默认状况下,经过使用Quartz库提供的标准脚本检测和初始化数据库,还能够经过设置 spring.quartz.jdbc.schema属性提供自定义脚本。

能够使用Quartz配置属性定制Quartz Scheduler配置(spring.quartz.properties.*)和SchedulerFactoryBeanCustomizer bean,它容许编程SchedulerFactoryBean bean进行定制化。ide

特别是, Executor bean不与scheduler相关联,由于Quartz提供了一种经过 spring.quartz.properties配置scheduler的方法,若是须要自定义任务执行程序,请考虑实现 SchedulerFactoryBeanCustomizer

Jobs能够定义setter来注入数据映射属性,常规bean也能够以相似的方式注入,以下例所示:spring-boot

public class SampleJob extends QuartzJobBean {

    private MyService myService;

    private String name;

    // Inject "MyService" bean
    public void setMyService(MyService myService) { ... }

    // Inject the "name" job data property
    public void setName(String name) { ... }

    @Override
    protected void executeInternal(JobExecutionContext context)
            throws JobExecutionException {
        ...
    }

}

上一篇:Hazelcast

下一篇:Spring Integration

相关文章
相关标签/搜索