Кварцевая работа срабатывает несколько раз - PullRequest
0 голосов
/ 23 марта 2010

У меня есть строительный блок, который настраивает работу Quartz для рассылки электронных писем каждое утро.Работа выполняется три раза каждое утро, а не один раз.У нас есть размещенный экземпляр Blackboard, который, как мне сказали, работает на трех виртуальных серверах.Я предполагаю, что именно это и является причиной проблемы, так как ранее строительный блок нормально работал на установке с одним сервером.

Есть ли у кого-нибудь опыт работы с Quartz или он мог бы подсказать, как можно предотвратить запуск задания несколько раз?

Спасибо,

Ответы [ 2 ]

0 голосов
/ 13 мая 2010

Полагаю, я немного опаздываю, отвечая на это, но у нас похожий сценарий с нашим приложением. У нас есть 4 сервера, на которых выполняются задания, некоторые из которых могут работать на нескольких серверах одновременно, а некоторые должны запускаться только один раз. Как говорится в ответе Уилла, вы можете посмотреть на особенности кластеризации Кварц .

Наш подход был немного другим, поскольку у нас было собственное решение, прежде чем мы переключились на Quartz. В наших заданиях используется таблица базы данных, в которой хранятся триггеры cron и другая информация о задании, а затем «блокируется» запись для задания, чтобы ни один из других серверов не мог ее выполнить. Это предотвращает многократное выполнение заданий на серверах и до сих пор было достаточно эффективным.

Надеюсь, это поможет.

0 голосов
/ 23 марта 2010

Вы не описали подробно, как создаются и запускаются ваши экземпляры Quartz, но следует помнить, что неопределенное поведение будет иметь место, если вы одновременно запустите несколько экземпляров Quartz для одной и той же базы данных хранилища заданий, если не включить кластеризацию (см. http://www.quartz -scheduler.org / docs / configuration / ConfigJDBCJobStoreClustering.html ).

...