Spring boot Quartz, чтобы пропустить некоторые задания

avatar
Shehan Simen
9 августа 2021 в 03:06
52
2
0

Я использую многомодульный проект spring boot + maven. Я использую конфигурацию Quartz с поддержкой кластера, поэтому сведения о задании хранятся в базе данных. Допустим, 2 модуля (проекта) Spring boot maven используют кварц, но я хочу, чтобы каждый модуль запускал собственные задания, которые отличаются для каждого модуля. В этом случае, когда я запускаю один модуль, он фактически пытается запускать задания и из другого модуля, потому что движок Quartz считывает задания для запуска из базы данных. Итак, как мне указать в каждом модуле запускать только определенные задания, связанные с модулем at? Один из способов — использовать разные префиксы таблиц для каждого модуля. Есть ли другой способ использовать одни и те же кварцевые таблицы между двумя разными модулями, но каждый модуль сам решает, какие задания запускать?

Источник

Ответы (2)

avatar
KaijuDeluxe
25 декабря 2021 в 21:38
0

У меня почти так же. Мое решение было: Задание A записывает флаг в таблицу БД рядом с заданием «running_by» jobA, и когда оно выполнено, оно удаляет флаг.

Итак, JobB проверяет, есть ли уже у этого задания флаг. Если нет, оно будет продолжено, если да, оно пропустит это задание, потому что оно уже запущено в JobA.

avatar
fucius
9 августа 2021 в 03:19
-1

настроить свойство вquart.properties org.quartz.jobStore.isClustered = true который может заставить кварц работать в кластерном режиме

Shehan Simen
9 августа 2021 в 04:06
1

Извините, этот ответ не имеет ничего общего с моим вопросом. Мои задания уже сохранены в БД, поэтому они поддерживают кластер.

fucius
9 августа 2021 в 06:51
0

Каждый модуль использует свою базу данных

Shehan Simen
9 августа 2021 в 08:06
0

это не мое требование