石英调度程序维护和性能开销



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

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

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

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

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

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

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

最新更新