Java 石英我如何将触发器置于不会重新触发失火的状态

Java 石英我如何将触发器置于不会重新触发失火的状态,java,quartz-scheduler,Java,Quartz Scheduler,我对我们的web应用程序有一个有趣的问题。我们最近遇到了一个巨大的并发问题,Quartz同时在数百个线程中启动同一个java类,导致数据库上的争用,并完全锁定我们的应用程序。在我们能够解决根本问题之前,我必须将数据库表qrtz_触发器上的所有缺火指令设置为“1”(不要重新触发缺火),以使应用程序启动并服务于正常流量。然后,我们手动缓慢地启动丢失的计划,以避免并发性问题 我已经修复了并发问题,并准备热部署我们的应用程序,但如果我将缺火指示设置回2(重新点火缺火),则错过的计划将根据上一次点火时间重

我对我们的web应用程序有一个有趣的问题。我们最近遇到了一个巨大的并发问题,Quartz同时在数百个线程中启动同一个java类,导致数据库上的争用,并完全锁定我们的应用程序。在我们能够解决根本问题之前,我必须将数据库表qrtz_触发器上的所有缺火指令设置为“1”(不要重新触发缺火),以使应用程序启动并服务于正常流量。然后,我们手动缓慢地启动丢失的计划,以避免并发性问题

我已经修复了并发问题,并准备热部署我们的应用程序,但如果我将缺火指示设置回2(重新点火缺火),则错过的计划将根据上一次点火时间重新点火

建议的解决方案-将上一次点火时间设置为下一次点火时间之前的几分钟,以便它认为上一次的计划已经完成。如果上一个fire_时间早于cron表达式表示的最后一个时间,那么我在这里的假设正确吗


我还看到,尚未运行的计划在列中有-1,这是新计划的默认值吗?也许我应该使用此值来代替?

因为我们需要立即使用此值,所以我决定试试运气,使用-1作为上一个fire\u time值(并将触发器更新回2)。这正如预期的那样起作用。

您可以发布相关
QRTZ
表格的打印件吗?我不确定这是否会有帮助。无论如何,我已经解决了这个问题。