【问题标题】:Quartz scheduler maintenance and performance overheadsQuartz 调度器维护和性能开销
【发布时间】:2020-01-31 07:33:06
【问题描述】:

我们目前正在评估在我们的项目中使用的quartz-scheduler。对于我们的用例,我们只需要在未来某个时间点触发一次触发器,它不必是可重复的或 cron 触发器。

因此,在我的 POC 中,当业务事件发生时,我将创建一个新的简单一次性触发器。我可以看到在集群环境中(使用石英的 JDBC 存储),触发器正在平衡/分布在多个节点之间。

从 POC 中观察到所需的行为,但是从性能的角度来看,如果我们每次大规模运行时都创建一个新的一次性触发器,成本会有多高。据我了解,一个瓶颈是触发器的数据库膨胀,数据库清理的可能解决方案是添加一个后台任务来清理旧触发器。

我有兴趣了解使用我们的设计维护调度程序的经验和痛点以及改进设计的任何输入。

【问题讨论】:

  • 这对于 Stack Overflow 来说太宽泛了。如果可以,请将其关闭为“需要关注”。

标签: java performance quartz-scheduler maintainability


【解决方案1】:

您可以安全地使用一次性触发器,它们会在触发后被 Quartz 自动移除。发生的情况是 Quartz 检查所有触发器并确定这些触发器是否会在将来的某个时间触发。如果不这样做,Quartz 只会将它们从商店中删除,因为保留它们没有意义。

一个有点类似的原则适用于工作。如果作业没有关联的触发器,Quartz 会自动将其从存储中删除,除非作业的持久性标志设置为 true。

因此,在您的情况下,您可能希望注册一堆持久作业,然后您的应用会根据需要为这些作业创建一次性触发器。作业将保留在商店中,完成后将自动清理触发器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多