Весеннее планирование кварца и тысячи рабочих мест - PullRequest
0 голосов
/ 05 июня 2018

В соответствии с бизнес-логикой моего приложения Spring Boot с Quartz Scheduling и MongoDB в качестве постоянного хранилища заданий, каждый пользователь системы может создать отложенное задание, которое должно быть выполнено в определенный момент времени.Пользователь выбирает время, когда оно должно быть выполнено.

Сейчас я думаю о подходе, при котором каждый пользователь будет создавать выделенное JobDetail для каждой отложенной работы, что-то вроде этого:

schedulerFactoryBean.getScheduler().addJob(jobDetail(), true, true);

Проблема, которую я потенциально могу увидеть здесь, заключается в том, что с помощью этого подхода я могу быстро создать тысячи рабочих мест в планировщике кварца.Ранее я никогда не планировал такое количество работ в Spring Scheduling с Quartz и не знаю, как система справится с этим.Это хорошая идея для реализации системы таким образом, и будет ли Spring Scheduling Quartz справляться с таким количеством заданий без проблем?

1 Ответ

0 голосов
/ 06 июня 2018

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

Если вы собираетесь выполнять много заданий одновременно, просто убедитесь, что вы настроили Quartz с достаточным количеством рабочих потоков.Количество рабочих потоков обычно должно быть равно максимальному количеству заданий, которые могут выполняться одновременно + небольшой буфер (10% или около того) на всякий случай.

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

Надеюсь, это поможет.Если нет, пожалуйста, спросите.

...