Quartz 2.2.2调度程序中报告了故障

时间:2019-03-08 20:12:43

标签: quartz-scheduler scheduler quartz

我遇到错误 java.sql.SQLIntegrityConstraintViolationException:ORA-00001:违反了唯一约束(QRTZ_FIRED_TRIGGER_PK)

我不确定为什么会失败,因为这两个(SCHED_NAME,ENTRY_ID)pkey中,所有作业的Sched_name始终相同,而ENTRY_ID由Quartz本身生成。

任何人都可以帮助我找到此ENTRY_ID的创建方式以及在哪种情况下会导致PK失败的情况。

在我的应用程序中,以相同的时间间隔安排了多个Quartz JOBS。

1 个答案:

答案 0 :(得分:0)

ENTRY_ID由节点的instanceId和附加的计数器确定。 (例如“ mynode1557833519480”)

当群集中有两个具有相同instanceId的节点时,就会发生这种冲突。

确保instanceIds是唯一的。从Quartz文档:

  

org.quartz.scheduler.instanceId

     

可以是任何字符串,但对于所有工作的调度程序来说必须是唯一的,就像它们在集群中是相同的“逻辑”调度程序一样。如果您希望为您生成ID,则可以将值“ AUTO”用作instanceId。

(该计数器已使用当前时间初始化,因此,如果在某个时间点将系统时钟调回,则也可能发生这种情况)