Я использую кварц для планирования работы. Задания создаются в группе «по умолчанию», и соответствующая информация передается в качестве полезной нагрузки в виде карты сведений о задании при использовании API-интерфейса расписания.
Trigger trigger = new Trigger(...);
JobDetail jobDetail = new JobDetail(...);
jobDetail.put(...);
scheduler.schedule(trigger, jobDetail);
Я хочу, чтобы API мог запрашивать триггеры в базе данных на основе отправленной полезной нагрузки. Например, у меня есть «externalId» как часть jobDetail.
Я хочу сделать что-то вроде
scheduler.getTriggers(new Criteria("externalId", externalId));
вместо того, чтобы извлекать все триггеры из памяти и затем перебирать их. Я немного поискал в Интернете, но не смог найти API, чтобы сделать то же самое.
РЕДАКТИРОВАТЬ: Начиная с кварца 2.1.5, есть несколько новых API.
scheduler.getTrigger(triggerKey(jobId, jobGroupName)); // which can fetch the exact trigger given the triggerKey
scheduler.getTriggerKeys(GroupMatcher.triggerGroupContains(JOB_GROUP_NAME)); //this searches all the triggers for a group.
Однако они недоступны для кварца 1.8. Одно ограничение по-прежнему заключается в том, что триггерный поиск должен быть точным и не может быть LIKE% по своей природе.