Запланированные задания Hazelcast (поддержка Quartz?)

Я знаю, что это несправедливо по отношению к терракотовым ребятам, но пробовал ли кто-нибудь использовать Hazelcast для выполнения запланированных заданий в кластерной среде?

Самая простая реализация, которую я могу себе представить, представляет собой следующую архитектуру:

  1. Глобальная блокировка Hazelcast для обеспечения того, чтобы только один серверзапускал конфигурацию Quartz.
  2. Запуск реальных задач как DistributedTask. (это можно сделать позже, пока тяжелые запланированные задачи должны будут позаботиться о запуске DistributedTask)
  3. Как только сервер, удерживающий блокировку, отключается, другой сервер получает блокировку.

Я считаю, что это было бы большим преимуществом для людей, у которых уже есть Hazelcast, поскольку им не нужно будет постоянно открывать терракотовую дребедень.

На данный момент я написал простейшее решение, состоящее в том, чтобы сделать только один узел ответственным за выполнение триггеров Quartz. Поскольку я использую только Cron-подобные триггеры, это может быть приемлемым решением, если я позабочусь о создании DistributedTasks для тяжелых триггерных задач.

Вот мое расширение org.springframework.scheduling.quartz.SchedulerFactoryBean, благодаря которому это происходит:

@Override
public void start() throws SchedulingException {
    new Thread(new Runnable() {
        @Override
        public void run() {
            final Lock lock = getLock();
            lock.lock();
            log.warn("This node is the master Quartz");
            SchedulerFactoryBean.super.start();
        }
    }).start();
    log.info("Starting..");
}

@Override
public void destroy() throws SchedulerException {
    super.destroy();
    getLock().unlock();
}

Пожалуйста, дайте мне знать, если я упустил что-то важное и можно ли это сделать.

Я добавил два файла на github. Вот расширение RAMJobStore:

https://github.com/mufumbo/quartz-hazelcast/blob/master/src/main/java/com/mufumbo/server/scheduler/hazelcast/HazelcastRAMJobStore.java

А вот расширение Spring SchedulerFactoryBean:

https://github. com/mufumbo/quartz-hazelcast/blob/master/src/main/java/com/mufumbo/server/scheduler/hazelcast/SchedulerFactoryBean.java

7
задан Rafael Sanches 3 July 2012 в 13:17
поделиться