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

时间:2013-02-07 10:13:49

标签: java spring quartz-scheduler

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

当我在弹簧配置文件中配置3个触发器时,如

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

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

在spring + Quartz集成中,是否有任何属性可以解决这个问题,还是我们需要为此问题做些其他事情?

提前致谢。

2 个答案:

答案 0 :(得分:4)

如果您在DB中存储触发器(假设您的触发器是基于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数据库表以查找与您的工作相关的剩菜。

答案 1 :(得分:0)

您可以使用Quartz API访问Quartz Scheduler,作业,触发器等。

看看这个Quartz CookBook,你会发现如何列出定义的所有触发器等等。也许你应该使用这个API删除不必要的触发器。