如何从石英表中删除未使用的触发器

问题描述 投票:5回答:2

我在Quartz中使用spring,并且一切正常,但是一些以前配置好的触发器也被执行了,因为它们存储在Quartz表中。我们可以手动删除所有未配置的触发器并执行应用程序,但这不是一个好习惯。我想通过spring + quartz属性或其他解决方案删除所有触发器。

[当我在spring配置文件中配置了3个触发器时,如

<property name="triggers">
    <list>
        <ref bean="FirstTrigger" />
        <ref bean="secondTrigger" />
        <ref bean="ThirdTrigger"/>
    </list>
</property>

服务器启动时,所有触发器存储在Quartz表中,并带有相应的cron触发器和作业详细信息。如果我删除了配置中的任何触发器,例如,在上面的示例中,我删除了第二个触发器,但它并未从Quartz表中删除。那时还执行了DBtrigger(已删除的触发器)。

在Spring + Quartz集成中,是否有任何属性可以解决此问题,或者我们需要针对此问题做其他事情?

提前感谢。

java spring quartz-scheduler
2个回答
4
投票

如果将触发器存储在数据库中(假设触发器基于cron,则可以像这样简单地删除记录:

DELETE FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME='scheduler' and TRIGGER_NAME='myTrigger' and TRIGGER_GROUP='DEFAULT';
DELETE FROM QRTZ_TRIGGERS WHERE SCHED_NAME='scheduler' and TRIGGER_NAME='myTrigger' and TRIGGER_GROUP='DEFAULT';

您也可以考虑环顾其他Quartz DB表以查找与您的工作相关的剩余物。


0
投票

您可以使用Quartz API访问Quartz Scheduler,Jobs,Trigger等。

[查看此Quartz CookBook,您将了解如何列出所有定义的触发器,等等。也许您应该使用此API删除不必要的触发器。

© www.soinside.com 2019 - 2024. All rights reserved.