Quartz периодически запускает задание несколько раз при использовании JobStoreTX - PullRequest
0 голосов
/ 05 мая 2020

Я использую java кварц (2.3.1), и у меня есть настройка, в которой я использую postgres в качестве хранилища заданий, и у меня есть 3-4 машины, на всех запущенных планировщик (вертикальное масштабирование). Я хочу, чтобы rds действовали как источник истины, и если у меня есть работа с расписанием повторения каждый 1 час, я хочу, чтобы она выполнялась на любой из машин. Меня не волнует, на какой из них он работает, пока это одна машина, запущенная в этот час.

Я заметил, что это работает очень хорошо большую часть времени, но у меня недавно был триггер, который запускается один раз час и примерно раз в два дня я вижу, как срабатывают две мои машины. Я заметил, что мое свойство isClustered имеет значение false, которое я теперь установил в значение true, но я не уверен, как это могло бы помочь, поскольку, если бы это было проблемой, эта проблема возникала бы в 100% случаев, а не редко. Может ли кто-нибудь сказать мне, что мне следует изучить, чтобы решить эту проблему?

1 Ответ

1 голос
/ 15 августа 2020

org.quartz.jobStore.isClustered = true

гарантирует, что к триггеру применены правильные блокировки строк базы данных перед его выбором, если это свойство было ложным, оба экземпляра могут активировать один триггер (условие гонки) до того, как один может изменить статус этого триггера.

http://www.quartz-scheduler.org/documentation/quartz-1.8.6/configuration/ConfigJDBCJobStoreClustering.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...