4

这是在调度程序中运行进程的最佳方式。我可以使用 crontab 或 Spring-Batch。还有其他更好的选择吗?

4

5 回答 5

6

石英

Quartz 是一个功能齐全的开源作业调度系统,可以与几乎任何 J2EE 或 J2SE 应用程序集成或一起使用——从最小的独立应用程序到最大的电子商务系统。Quartz 可用于创建简单或复杂的调度,以执行数十、数百甚至数万个作业;任务被定义为标准 Java 组件或 EJB 的作业。Quartz Scheduler 包括许多企业级功能,例如 JTA 事务和集群。

于 2009-09-23T12:14:23.627 回答
1

如果您想在一个 VM 中安排任务,还可以查看 Quartz。

如果你想定期做一些事情作为一个单独的过程,我会选择 crontab。

于 2009-09-23T12:14:24.013 回答
0

我认为 crontab 是合理的。它也是用于商业目的的成熟程序。

其他具有 GUI 任务创建功能的调度程序是 MAESTRO。您还可以生成一些用于自动化的配置文件。

于 2009-09-23T12:16:01.257 回答
0

Spring + Quartz 比 Spring Batch 更容易设置。但这取决于您的应用程序。

http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.html

使用 Spring + Quartz,您可以定义一个 MethodInvokingJobDetailFactoryBean 来安排对 bean(存在于您的应用程序上下文中)的方法调用。

在此示例中 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>
于 2009-09-23T12:19:49.837 回答
0

试试 TimeMachine 调度器

https://bitbucket.org/saltnlight5/timemachine-scheduler/wiki/Home

于 2012-03-22T15:06:51.367 回答