春季批次与石英工作?

时间:2015-10-17 15:34:13

标签: spring quartz-scheduler spring-batch

我是批处理的新手。我试图从简单的调度程序和工作开始。但我很困惑b / w 春季批次与石英工作。我的理解是

Quartz: - quartz提供了两种框架,即调度程序框架和作业框架(如果我不想使用spring批处理作业)。对吗?

Spring Batch: - 它只提供作业框架。我一直使用Quatz schecduler来安排弹簧批处理作业。 spring也提供自己的调度程序吗?

4 个答案:

答案 0 :(得分:31)

Quartz是一个调度框架。比如“每个小时或每个月的每个星期五执行某些事情”

Spring Batch是一个框架,它定义了将要执行的“某些东西”。 您可以定义包含步骤的作业。通常,步骤由项目阅读器,可选项目处理器和项目编写器组成,但您可以定义自定义词干。您还可以告诉Spring批处理每10个项目和许多其他内容。

您可以使用Quartz来启动Spring Batch作业。

所以基本上Spring Batch定义了应该做什么,Quartz定义了何时应该完成。

答案 1 :(得分:2)

official FAQ中有此问题的答案

Spring Batch与Quartz有何不同?

在解决方案中是否都为他们提供了空间? Spring Batch和Quartz具有不同的目标。 Spring Batch提供了用于处理大量数据的功能,而Quartz提供了用于调度任务的功能。因此,Quartz可以补充Spring Batch,但不排除技术。常见的组合是使用Quartz作为使用Cron表达式和Spring Core便捷 SchedulerFactoryBean 的Spring Batch作业的触发器。

答案 2 :(得分:1)

  

spring是否也提供自己的调度程序?

是的,使用Spring TaskScheduler ,如下所示:

 <task:scheduled-tasks>
    <task:scheduled ref="runScheduler" method="run" fixed-delay="5000" />
  </task:scheduled-tasks>

  <task:scheduled-tasks>
    <task:scheduled ref="runScheduler" method="run" cron="*/5 * * * * *" />
  </task:scheduled-tasks>

full example

使用 Quartz Scheduler ,如下所示:

  <!-- run every 10 seconds -->
  <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail" />
        <property name="cronExpression" value="*/10 * * * * ?" />
      </bean>
    </property>
  </bean>

full example

答案 3 :(得分:0)

Spring Batch:从数据源(数据库中的表,平面文件等)读取数据,然后处理该数据。然后将数据存储在另一个数据源中,并且可以采用其他格式。 我在博客中做了一个tutorial,内容涉及如何集成Spring Boot 2,Spring batch和Quartz。 您可以集成Spring Boot和Spring Batch,并跳过Quartz集成。 Quartz是一个调度程序,可以在将来调度任务,并且它具有自己的元数据表来管理作业状态。