Моя проблема в том, что когда я запускаю два экземпляра tomcat в кластерном режиме с планировщиком, который вызывается каждые 10 секунд
println "called: " + new Date()
тогда каждый экземпляр tomcat будет вызывать эту печать независимо. Если я установлю конфигурацию Quartz для обработки кластеризации, это не должно быть так.
Например, если кот А запустился в 8:00:00, а кот Б запустился в 8:00:05, то планировщик должен быть вызван в коте А в 8:00:10, а кот Б не звонить в 8:00:15. Но в моем случае планировщик сработал в коте А в 8:00:10 и в коте Б в 8:00:15, затем в коте А в 8:00:20 и в коте Б в 8:00:25 и так далее. . Похоже, мой планировщик работает независимо и не синхронно.
Это правильное поведение или я что-то упускаю?
Вот моя конфигурация
кварц.свойства
# http://stackoverflow.com/questions/7479438/grails-clustering-quartz-jobs-sample-code-and-config-desired
org.quartz.scheduler.skipUpdateCheck = true
org.quartz.scheduler.instanceName = HartakuClusteredScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource = quartzDataSource
org.quartz.jobStore.tablePrefix = qrtz_
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 5000
org.quartz.jobStore.useProperties = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
# Detect the jvm shutdown and call shutdown on the scheduler
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
org.quartz.dataSource.quartzDataSource.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.quartzDataSource.URL = jdbc:mysql://localhost/latihanclust?useUnicode=yes&characterEncoding=UTF-8
org.quartz.dataSource.quartzDataSource.user = root
org.quartz.dataSource.quartzDataSource.password =
org.quartz.dataSource.quartzDataSource.maxConnections = 8
QuartzConfig.groovy
quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
environments {
test {
quartz {
autoStartup = false
}
}
}
TestingJob.groovy
class TestingJob {
static triggers = {
simple startDelay:10000, repeatInterval: 10000l // execute job once in 10 seconds
}
def execute() {
println "called: " + new Date()
}
}
def concurrent = false
иdef durable = true
на свою работу, это решит вашу проблему. - person Joshua Moore   schedule 10.12.2014