Вопрос
Какой самый лучший способ запустить процесс в планировщике.Я могу сделать это либо crontab, либо Spring-Batch.Есть какой-нибудь другой вариант получше?
Решение
Quartz - это полнофункциональная система с открытым исходным кодом система планирования заданий, которая может быть интегрирована с приложением или использоваться параллельно практически с любым приложением J2EE или J2SE - от самого маленького автономного приложения до крупнейшей системы электронной коммерции .Quartz можно использовать для создания простых или сложных расписаний для выполнения десятков, сотен или даже десятков тысяч заданий;задания, чьи задачи определены как стандартные Java компоненты или EJBS.Quartz Планировщик включает в себя множество функций корпоративного класса, таких как JTA транзакции и кластеризация.
Другие советы
Вы также можете обратиться к Quartz, если хотите планировать задачи на одной виртуальной машине.
Если вы хотите периодически что-то делать как отдельный процесс, я бы выбрал crontab.
Я думаю, что кронтаб разумен.Это зрелая программа, используемая также в коммерческих целях.
Другим менеджером по созданию задач с графическим интерфейсом является MAESTRO.Вы также могли бы сгенерировать несколько конфигурационных файлов для автоматизации.
Spring + Quartz намного проще настроить, чем Spring Batch.Но это зависит от вашего приложения.
http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.html
Используя Spring + Quartz, вы можете определить MethodInvokingJobDetailFactoryBean, который планирует вызов метода для компонента (который существует в контексте вашего приложения).
В этом примере OrderService.cancelNotPaidOrders() будет вызываться каждые 30 минут:
<bean id="cancelExpiredOrders" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetBeanName" value="orderService"/>
<property name="targetMethod" value="cancelNotPaidOrders"/>
<property name="concurrent" value="false" />
</bean>
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="cancelExpiredOrders" />
<property name="startDelay" value="10000" />
<property name="repeatInterval" value="1800000" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
Попробуйте планировщик TimeMachine
https://bitbucket.org/saltnlight5/timemachine-scheduler/wiki/Home