Quartz无法删除作业,现在是什么?

Jam*_*sev 8 java quartz-scheduler

给出Quartz作业和以下命令

boolean deleted = scheduler.deleteJob(event.getName(), "some group name")
Run Code Online (Sandbox Code Playgroud)

假设deleted回来false,据我所知,这意味着从JVM的角度来看,工作仍然存在.

有了这2个问题:

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

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

我在用

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>1.8.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

这是否会成为处理事情的正确方法?我的推理是否正确?

    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);
    }
Run Code Online (Sandbox Code Playgroud)

Nic*_*ris 8

  1. 是的,你已经在做了.
  2. 该工作目前正在运行.

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

在SchedulerException之后尝试为一般Exception添加一个catch(它是更好的异常处理,如果你不确定它可能会得到的错误它会帮助你).

另外请记住,在构建石英作业时,可以使用jobBuilder.storeDurably(false),这将导致在不再有与之关联的活动触发器时自动删除石英作业.