Работа кварца всегда выполняется на одном узле

У меня кварц настроен для работы в кластере, вот моя простая конфигурация кварца

org.quartz.scheduler.instanceName = планировщик заданий

org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
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.misfireThreshold=10000
org.quartz.jobStore.tablePrefix=QRTZ_

org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000

У меня есть два узла, выполняющих мои задания, однако, когда я планирую запуск какой-либо задачи каждую секунду, я вижу, что она выполняется только на node1. Если я приостановлю планировщик на node1, задача переместится на node2 и будет придерживаться его, даже когда node1 снова подключится к сети. Как я могу добиться равномерного распределения казней между узлами?

Спасибо


person Evgeny Makarov    schedule 10.05.2017    source источник


Ответы (1)


Это может быть полезно. Если ваш кластер не очень загружен, один узел может в конечном итоге выполнить всю работу, потому что каждый раз, когда он завершает задание, он будет искать дополнительную работу и находить следующий запуск только что выполненной работы. Другой узел в вашем кластере будет периодически опрашивать о работе, но с меньшей вероятностью найдет что-то, что нужно сделать.

У вас есть причина, чтобы распределить работу по кластеру более равномерно? Что-то не получается? Если узел принимает на себя больше работы, чем он способен выполнить, вы можете подумать об отключении threadCount.

person Andrew Rueckert    schedule 10.05.2017
comment
Спасибо за ответ. Это только что возникло, когда я писал тесты для кластера. Здесь нет реальной проблемы - person Evgeny Makarov; 13.05.2017