【问题标题】:Using Quartz library , how to read cron expression from Database Table, instead of getting from properties file使用 Quartz 库,如何从数据库表中读取 cron 表达式,而不是从属性文件中获取
【发布时间】:2020-09-26 23:19:48
【问题描述】:
@Scheduled(cron= "${time.export.cron}")
public void performJob() throws Exception {
   // do something
}

这是来自属性文件,它工作正常。 但我想通过数据库表读取玉米表达式,而不是从 属性文件。我们如何知道系统应该在哪个时间运行作业。

【问题讨论】:

  • 你在使用spring调度器吗?这不是石英
  • 是的,这个是spring scheduler,但现在我搬到了quartz

标签: java spring cron quartz


【解决方案1】:

当然。 通过以下属性添加org.quartz.jobStore.class 和db info。

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.clusterCheckinInterval = 20000

供您参考的官方文档。 http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html

【讨论】:

  • 谢谢你的回复,我会尽量这样做
【解决方案2】:

我想您希望能够修改 cron 表达式而无需重新部署您的服务。 首先,cron 触发器被创建一次。所以你可以在你的应用启动时有类似关注的东西。

@PostConstruct
public void setupCronJobs() throws SchedulerException, ParseException {

}
private JobDetail cronJobDetail() {

        return JobBuilder.newJob()
                         .ofType(CLASS)
                         .storeDurably()
                         .withIdentity(YOUR_JOB_ID, YOUR_JOB_GROUP)
                         .build();
    }

    private Trigger cronJobTrigger(final JobDetail jobDetail) {

        return TriggerBuilder.newTrigger()
                             .forJob(jobDetail)
                             .withIdentity(YOUR_TRIGGER_ID, YOUR_TRIGGER_GROUP)
                             .withSchedule(cronSchedule("YOUR EXPRESSION HERE"))
                             .build();
    }

这将在表 YOURSUFIX_cron_triggers 中创建一个触发器配置。

您可以手动修改它,也可以添加 API 调用或其他东西来更新它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多