2012-03-12 2 views
0

Я использую кварц вместе с весной. JobStore, который я использую, является RAMJobStore.Quartz scheduler - Можно ли настроить Quartz для разрешения заданий с тем же идентификатором в RAMJobStore?

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

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

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

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

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

ответ

0

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

Посмотрите here на исходный код.

1

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

Смежные вопросы