Spring Boot 參考指南(Quartz Scheduler)

博弈發表於2019-01-19

39. Quartz Scheduler

Spring Boot為使用Quartz Scheduler提供了一些方便,引入spring-boot-starter-quartz“啟動器”,如果Quartz是可用的,則將自動配置Scheduler(通過抽象的SchedulerFactoryBean)。

下列型別的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,如下例所示:

spring.quartz.jdbc.initialize-schema=always

預設情況下,通過使用Quartz庫提供的標準指令碼檢測和初始化資料庫,還可以通過設定spring.quartz.jdbc.schema屬性提供自定義指令碼。

可以使用Quartz配置屬性定製Quartz Scheduler配置(spring.quartz.properties.*)和SchedulerFactoryBeanCustomizer bean,它允許程式設計SchedulerFactoryBean bean進行定製化。

特別是,Executor bean不與scheduler相關聯,因為Quartz提供了一種通過spring.quartz.properties配置scheduler的方法,如果需要自定義任務執行程式,請考慮實現SchedulerFactoryBeanCustomizer

Jobs可以定義setter來注入資料對映屬性,常規bean也可以以類似的方式注入,如下例所示:

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

相關文章