gpt4 book ai didi

java - Quartz 无法删除作业,现在怎么办?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:11 25 4
gpt4 key购买 nike

给定一个 Quartz 作业和以下命令

boolean deleted = scheduler.deleteJob(event.getName(), "some group name")

假设 deleted 返回为 false,据我了解,这意味着从 JVM 的角度来看,工作仍然存在。

有了这两个问题:

  1. 是否可以强制删除作业?
  2. 什么事件阻止 Quartz 删除作业?

如果没有抛出异常,是否可以安全地假设找不到工作?什么会导致这个?发生这种情况的唯一方法不是首先删除作业吗?

我正在使用

    <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.0</version>
</dependency>

您认为这是处理事情的正确方法吗?我的推理是否正确?

    boolean deleted;
try {
deleted = scheduler.deleteJob(event.getName(), "some group name");
if (!deleted) {
logger.warn("Quartz failed to delete the job!" + event.getName() + ". Job not found");
}
} catch (SchedulerException e) {
logger.error("There is an internal Scheduler error", e);
}

最佳答案

  1. 是的,您已经在这样做了。
  2. 作业当前正在运行。

如果您需要在作业运行时删除它,请确保您的作业实现了 org.quartz.InterruptableJob。然后你可以在它运行时调用 org.quartz.Scheduler.interrupt(JobKey) 来停止它。

尝试在您的 SchedulerException 之后为一般异常添加一个捕获(这是更好的异常处理,如果您不确定可能会遇到的错误,它会对您有所帮助)。

另请记住,当您构建 quartz 作业时,您可以使用 jobBuilder.storeDurably(false),当不再有 Activity 触发器关联时,这将导致您的 quartz 作业被自动删除

关于java - Quartz 无法删除作业,现在怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com