Если у меня работает планировщик Quartz с кучей триггеров, и я хочу очистить все триггеры, как лучше это сделать?
Я рассмотрел итерацию по группам и именам, вызывая незапланированное по ходу дела, но это кажется очень медленным, когда есть тысячи триггеров на месте (около 2 с, чтобы незапланировать 10 триггеров).
Элементарный тестовый пример (триггеры по расписанию 1000, пакеты по 100 удаляются) показывает экспоненциальную сложность w.r.t. количество запланированных триггеров для внеплановой операции:
Deleted 100 triggers in 3594ms,35.94 triggers/ms
Deleted 100 triggers in 2734ms,13.67 triggers/ms
Deleted 100 triggers in 2453ms,8.176666666666666 triggers/ms
Deleted 100 triggers in 1985ms,4.9625 triggers/ms
Deleted 100 triggers in 1547ms,3.094 triggers/ms
Deleted 100 triggers in 1281ms,2.135 triggers/ms
Deleted 100 triggers in 1047ms,1.4957142857142858 triggers/ms
Deleted 100 triggers in 765ms,0.95625 triggers/ms
Deleted 100 triggers in 485ms,0.5388888888888889 triggers/ms
Deleted 100 triggers in 156ms,0.156 triggers/ms
Я не могу найти какие-либо массовые методы, чтобы разобраться.
Наконец-то я подумал о том, чтобы остановить планировщик и освободить его для сбора мусора, но я не уверен, что есть еще что-то, что мне может понадобиться, чтобы убедиться, что на него нигде не ссылаются.
Кто-нибудь получил представление о лучшем подходе здесь?