【问题标题】:Can setting the 'clustered' property of a Quartz setup cause problems on a single machine?设置 Quartz 设置的 'clustered' 属性会导致单台机器出现问题吗?
【发布时间】:2012-02-02 01:13:23
【问题描述】:

我们有一堆配置为在集群环境中运行的石英作业,并且在真正的集群(两台 WAS 机器)上一切似乎都运行良好。

DEV环境我们还是用的

org.quartz.jobStore.isClustered = true

虽然我们只使用一台机器。但是我们经常但并不总是遇到以下异常:

org.quartz.JobPersistenceException: 
    Couldn't store trigger 'DEFAULT.MT_6uclr3emepk6p' for '<group>.<name>' 
    job:The job (<group>.<name>) referenced by the trigger does not exist.

我们将 DEV 环境的设置更改为

org.quartz.jobStore.isClustered = false

这似乎让问题消失了。

所以问题是:

  • 当您实际上不使用集群时,设置org.quartz.jobStore.isClustered = true 是否有问题
  • 如果是,为什么?
  • 如果不是,原始问题的原因可能是什么?

更新:关于何时发生错误的说明:

这是设置作业的 sn-p。

JobKey JOBKEY = new JobKey("Name", "group");
newTrigger().withIdentity("TriggerName", "group").forJob(
                JOBKEY).build();
JobDetail job = newJob(NameJob.class).withIdentity(
                JOBKEY)
                .storeDurably().build();
scheduler.addJob(job, false);

这个 sn-p 应该触发一个作业执行

scheduler.triggerJob(JOBKEY);

【问题讨论】:

  • 您使用的是哪个版本的 Quartz?在为现有作业创建新触发器时,您何时会收到这些错误?或者创建一个新的工作和触发器?或者可能正在更新?
  • quartz-scheduler 是 2.0.0 版

标签: java quartz-scheduler cluster-computing


【解决方案1】:

这是一条红鲱鱼。 isClustered=true 一个节点就可以了(虽然没有必要)。

我敢打赌,您在同时进行测试/构建时遇到了由多个开发人员使用同一个数据库引起的问题。

【讨论】:

  • 不太可能。我们的开发机器每晚进行一次部署,并且 UI 操作应该触发作业运行,但该作业运行失败并出现异常。
  • 好吧,不确定你当时遇到了什么,但是当你只有一个节点时,与 isClustered 标志 = true 相关的问题不是问题。该错误消息意味着调度程序中不存在已识别的作业(您尝试触发的作业)。
猜你喜欢
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多