7

我将 spring 与 Quartz 一起使用,一切正常,但一些以前配置的触发器也被执行,因为它们存储在 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 集成中,是否有任何属性可以处理这个问题或者我们需要为这个问题做些什么?

提前致谢。

4

2 回答 2

5

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

于 2014-12-03T10:54:08.277 回答
1

您可以使用Quartz API访问 Quartz 调度程序、作业、触发器等。

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

于 2013-02-07T10:21:17.330 回答