Я использую Quartz Scheduler как кластер из 3 узлов с MySQL. Ниже представлена моя конфигурация кварца
org.quartz.scheduler.instanceName=ClusteredScheduler
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=500
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.acquireTriggersWithinLock=true
org.quartz.jobStore.misfireThreshold=240000
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.plugin.shutdownHook.class=org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownHook.cleanShutdown=TRUE
org.quartz.jobStore.clusterCheckinInterval=500
org.quartz.scheduler.batchTriggerAcquisitionMaxCount=500
Это работает хорошо, задания распределяются по узлам, у нас есть конфигурация MISFIRE_INSTRUCTION_DO_NOTHING
, и мы сохраняем пропущенное задание в отдельной таблице БД. Logi c для сохранения пропущенных заданий является частью метода отмены triggerMisfired
. Когда задания пропускаются, я вижу, что пропущенные задания дублируются на узлах, что создает повторяющиеся записи в таблице. Это происходит только тогда, когда мы сохраняем пропущенные вакансии. Есть ли какая-либо конфигурация, которая позволит нам обрабатывать пропущенные задания как часть кластера, чтобы, как и в случае с Trigger, распределялись даже пропущенные задания?