Quartz 任务调度器设置

从 Jmix v1.2 开始,推荐使用 Quartz 扩展组件 集成 Quartz 任务调度。

如果没使用 Quartz 组件,请参考下面的方法。

框架中多处用到了 Quartz 任务调度器 运行计划任务。本章节介绍如何在项目中引入 Quartz 并为不同的数据库设置作业存储。

  1. build.gradle 文件添加下列依赖:

    implementation 'org.springframework.boot:spring-boot-starter-quartz'
  2. application.properties 文件添加下列属性:

    main.datasource.studio.liquibase.excludePrefixes = qrtz_
    spring.quartz.job-store-type = jdbc
  3. 如果使用 PostgreSQL,添加下列属性:

    spring.quartz.properties.org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
  4. 如果使用 Microsoft SQL Server,添加下列属性:

    spring.quartz.properties.org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
  5. 如果使用 HSQL、PostgreSQL、MySQL 或 Oracle 数据库,可以依赖应用程序启动时自动创建 Quartz 表格。仅需添加下列属性:

    spring.quartz.jdbc.initialize-schema = always
  6. 如果使用 Microsoft SQL Server,需要手动创建数据库结构,因为 Spring Boot 无法自动执行 Quartz 提供的脚本。按照下列步骤:

    • 添加了 Quartz 依赖并重新加载 Gradle 项目之后,在 Quartz JAR 中找到 tables_sqlServer.sql 文件。可以在 IDEA 中点击两次 Shift 键(Navigate → Search Everything),然后输入文件名。

    • 使用数据库的 SQL 客户端运行 tables_sqlServer.sql 文件中的内容。注意,需要将第一个 USE 指令中的 enter_db_name_here 占位符替换为你的数据库名称。

    • 在应用程序中添加下列属性:

      spring.quartz.jdbc.initialize-schema = never