我们目前正在评估在我们的项目中使用quartz-scheduler。对于我们的用例,我们只需要在未来的某个时候触发一次触发器,它不需要是可重复的或cron触发器。
因此,在我的POC中,当业务事件发生时,我创建了一个新的简单的一次性触发器。我可以看到,在集群环境中(使用quartz的JDBC存储),触发器正在多个节点之间平衡/分布。
从POC的角度观察期望的行为,但从性能的角度来看,如果我们在大规模运行时每次都创建一个新的一次性触发器,那么代价会有多高。据我所知,一个瓶颈是触发器的数据库膨胀,数据库清理的可能解决方案是添加一个后台任务来清理旧的触发器。
我很有兴趣听到关于维护我们的设计和任何输入改进设计的调度器的经验和痛点。
发布于 2020-01-31 18:47:36
您可以安全地使用一次性触发器,它们将在触发后由Quartz自动删除。发生的事情是,Quartz检查所有触发器,并确定这些触发器是否将在未来的某个时候触发。如果没有,Quartz会简单地将它们从存储中删除,因为保留它们没有任何意义。
类似的原则也适用于工作。如果作业没有关联的触发器,Quartz会自动将其从存储中删除,除非作业的持久性标志设置为true。
因此,在您的情况下,您可能希望注册一堆持久作业,然后您的应用程序将根据需要为这些作业创建一次性触发器。作业将保留在存储中,触发器将在完成后自动清除。
https://stackoverflow.com/questions/59999673
复制相似问题