Кварцевый планировщик - можно ли настроить Quartz так, чтобы в RAMJobStore можно было выполнять задания с одинаковой идентификацией? - PullRequest
0 голосов
/ 12 марта 2012

Я использую Quartz вместе с Spring. Я использую JobStore - RAMJobStore.

Я создаю пару заданий с одинаковой идентификацией (они имеют одинаковое определение экземпляра (JobDetail)). Поскольку я хочу убедиться, что эти задания не выполняются параллельно, я аннотировал их класс заданий с помощью @ DisallowConcurrentExecution.

Моя проблема в том, что RAMJobStore не допускает более одного задания с одним и тем же идентификатором в одно и то же время в магазине, поэтому при попытке добавить задание я получаю исключение:

   org.quartz.ObjectAlreadyExistsException: Unable to store Job : 
   'jobX', because one already exists with this identification.

У вас есть идеи о том, как я могу преодолеть эту проблему?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2012

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

0 голосов
/ 14 марта 2012

Из исходного кода RAMJobStore видно, что в RAMJobStore не может быть двух заданий с одним и тем же ключом одновременно.

Посмотрите здесь на источникекод.

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