我们有一堆配置为在集群环境中运行的 quartz 作业,在真实集群(两台 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
是否有问题 - 如果是,为什么?
- 如果不是,那么最初问题的原因可能是什么?
更新:关于错误发生时间的说明:
这是设置作业的代码段。
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);
这个片段应该触发作业执行
scheduler.triggerJob(JOBKEY);
最佳答案
这是一条红鲱鱼。一个节点的 isClustered=true 就好了(尽管没有必要)。
我敢打赌,您遇到的问题是由多个开发人员在同时进行测试/构建时使用同一数据库引起的。
关于java - 设置 Quartz 设置的 'clustered' 属性会导致单台机器出现问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9093689/