сделать планировщик Quartz постоянным без JDBC

Мы создаем приложение на основе MongoDB, и нам необходимо периодически запускать задания, подобные cron. Я использовал Quartz раньше для подобных вещей, когда проекты основывались на СУБД с JDBC.

Поскольку мы уже используем MongoDB для нашего основного хранилища данных в этом проекте, я бы предпочел не вводить СУБД просто для сохранения заданий Quartz, но, похоже, здесь нет никакого вида JobStore реализация для MongoDB.

Может ли кто-нибудь порекомендовать способ поддержки Quartz с помощью MongoDB или простую альтернативу Quartz? Мои потребности довольно просты (запуск различных заданий Java с некоторой конфигурацией, а-ля cron).


person George Armhold    schedule 25.01.2011    source источник
comment
Я не знаю ни одного такого продукта, но я никогда не слышал о Quartz до сегодняшнего дня. Учитывая понятный интерфейс JobStore, кажется, например, вы должны иметь возможность использовать Java-драйвер MongoDB и реализовать такое хранилище. Не так хорошо, как бесплатный и работающий, но я не уверен, что вы найдете такую ​​​​вещь в данный момент.   -  person Gates VP    schedule 26.01.2011
comment
Реализация интерфейса JobStore необязательна для Quartz — вам нужно только в том случае, если (1) вы работаете в кластерной среде или (2) вы используете постоянные свойства задания, которые необходимо сохранять между перезапусками JVM. В противном случае просто создайте экземпляр планировщика и добавьте задания при запуске.   -  person Uriah Carpenter    schedule 26.01.2011


Ответы (2)


Мы запускаем кварц с Spring, и это просто файл XML с определенными заданиями и выражениями cron.

Объявить работу весной:

  <bean name="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="concurrent" value="false"/>
    <property name="targetBeanName" value="myBean"/>
    <property name="targetMethod" value="myScheduledMethod"/>
  </bean>

  <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="myJob"/>
    <!-- every 30s -->
    <property name="cronExpression" value="0/30 * * * * ?"/>
  </bean>

Кварцевая проводка:

  <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <!-- List of batch jobs to be fed to the scheduler. -->
      <list>
        <ref bean="myTrigger"/>
      </list>
    </property>
  </bean>

Запустите его с помощью:

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App 
{
    public static void main( String[] args ) throws Exception
    {
        new ClassPathXmlApplicationContext("jobs-context.xml");
    }
}
person Clement P    schedule 26.01.2011
comment
На этом я более-менее остановился. Мы не используем Spring, так что я просто указываю свойquartz.properties на файлquartz-config.xml, как описано здесь: openscope.net/2010/02/05/quartz-scheduled-jobs Спасибо, что указали мне правильное направление. - person George Armhold; 26.01.2011
comment
Это просто работает встроенный, верно? Это хорошо для определенных заданий, но для постоянных заданий, особенно неповторяющихся, вы хотите иметь постоянное хранилище, поддерживающее его, чтобы вы могли выдерживать удаление и т. Д. - person Eelco; 09.09.2011

Изменить: последняя реализация https://github.com/michaelklishin/quartz-mongodb разветвляется снизу репо


Я написал MongoDB JobStore для Quartz, который находится здесь: https://github.com/mulesoft/quartz-mongodb Он не поддерживает все, но работает для множества вариантов использования.

person Dan Diephouse    schedule 05.08.2011
comment
Это круто, Дэн. Большое спасибо, что поделились этим. - person Eelco; 09.09.2011
comment
Это выглядит очень интересно. Спасибо. - person GreenKiwi; 07.12.2011
comment
Поддерживает ли эта реализация повторяющиеся сигналы тревоги? Будет ли он автоматически перезагружать триггеры из базы данных и планировать их при перезапуске приложения? - person Gopinath; 17.02.2015