quartz-scheduler - Quartz JDBC 作业存储 - 维护/清理

标签 quartz-scheduler

我目前正在使用 JDBC 作业存储在负载平衡环境中设置 Quartz,我想知道每个人如何管理 quartz 作业存储数据库。

对我而言,Quartz (2.2.0) 将作为版本化应用程序的一部分进行部署,同时在一台服务器上可能存在多个版本。我使用符号 XXScheduler_v1 来确保多个调度程序协同工作。我的代码工作正常, quartz 表被适本地填充了触发器/作业/等。

但我注意到的一件事是,在取消部署应用程序时似乎没有发生数据库清理。我的意思是,即使调度程序不再处于事件状态,作业/调度程序数据似乎仍保留在 quartz 数据库中。

这不太理想,我可以想象使用我的模型,随着时间的推移,数据库会变得比它需要的更大。我是否错过了如何连接一些清理过程?还是 quartz 希望我们手动进行数据库清理?

干杯!

最佳答案

一旦我遇到这个问题,这就是我为纠正这个问题所做的。这肯定会起作用,但如果它不起作用,那么我们将备份表,因此您在尝试此操作时不会丢失任何东西。

  • 使用以下提到的方法获取下表的 sql 转储: Taking backup of single table
  •     a) QRTZ_CRON_TRIGGERS
        b) QRTZ_SIMPLE_TRIGGERS
        c) QRTZ_TRIGGERS
        d) QRTZ_JOB_DETAILS
    
  • 从上表中依次删除数据为
     delete from QRTZ_CRON_TRIGGERS
     delete from QRTZ_SIMPLE_TRIGGERS
     delete from QRTZ_TRIGGERS
     delete from QRTZ_JOB_DETAILS 
    
  • 重新启动您的应用程序,然后将新插入所有已删除的任务和上表中的相关条目(前提是您的应用程序具有正确的逻辑)。

  • 这更像是在第一次安排所有任务的情况下启动您的应用程序。因此,您必须记住,任务的行为就像它们是新插入的一样。
    注意:如果这不起作用,则应用您为表进行的备份并尝试更仔细地调试。到目前为止,我还没有看到这种方法失败。

    关于quartz-scheduler - Quartz JDBC 作业存储 - 维护/清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694178/

    相关文章:

    java - 如何在JBoss6中动态添加Quartz作业

    java - 如何在jsf网站后台运行线程?

    java - 我可以使用 Quartz Scheduler 来启动我的应用程序吗?

    quartz-scheduler - Quartz 调度程序在应用程序池回收后不执行作业(.Net)

    java - Web 应用程序中的 Quartz 调度程序

    java - 排除特定时间范围的 Quartz 调度程序

    java - Tomcat 6 中的 Quartz 调度程序,线程不会停止

    java - 安排 Spark 作业 Java

    spring - 如何让JobDetailBean非并发运行?

    java - 如何使用 spring bean 执行方法