You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quartz集群环境中调用scheduler.deleteJob(jobKey)无法删除作业的问题求助

Quartz集群环境中调用scheduler.deleteJob(jobKey)无法删除作业的问题求助

各位使用Quartz的小伙伴们,我最近在集群环境下遇到一个特别头疼的问题,调用scheduler.deleteJob(jobKey)明明返回了true,但作业就是删不掉,还一直在按原间隔触发,实在搞不懂哪里出问题了,来求助大家!

环境信息

  • Quartz版本:2.3.2
  • JobStore类型:JDBC(JobStoreTX)
  • 集群配置:✅ 两台应用实例,共享同一个数据库
  • 事务模式:JobStoreTX

作业创建与调度的代码

我是这样创建并调度作业的:

JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("someKey", "someValue");

JobDetail job = JobBuilder.newJob(jobClass)
    .withIdentity(jobKey)
    .usingJobData(jobDataMap)
    .build();

Trigger trigger = TriggerBuilder.newTrigger()
    .withIdentity(triggerKey)
    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInSeconds(intervalInSeconds)
        .repeatForever())
    .startAt(DateBuilder.futureDate(
        ThreadLocalRandom.current().nextInt(1, intervalInSeconds),
        DateBuilder.IntervalUnit.SECOND))
    .build();

scheduler.scheduleJob(job, trigger);

删除作业的操作

之后我尝试调用以下代码删除作业:

scheduler.deleteJob(jobKey);

我特意确认了这个调用的返回值是true,按道理应该删除成功了,但实际情况却完全不符合预期。

预期结果与实际结果

预期结果

作业从数据库中被彻底移除,不再继续触发。

实际结果

作业仍然按照原定的时间间隔持续触发,我查了数据库的情况:

  • 作业依然存在于QRTZ_TRIGGERS表中
  • JOB_DETAILS表中该作业的start_time还是两周前创建时的时间,说明不是被重新创建了
  • 触发行为完全没受影响,就像删除操作根本没执行过一样

我的猜测

我怀疑是不是集群环境下的竞态条件导致的?比如某个节点的缓存或者锁机制出了问题,导致删除操作没有在集群中同步?

有没有大佬遇到过类似的问题,或者能给我一些排查的方向?麻烦大家了!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:53:03