Spring批与石英工作?

gopyfrb3  于 2023-02-07  发布在  Spring
关注(0)|答案(4)|浏览(124)

我是批处理的新手。我试图从简单的调度程序和作业开始。但是我对b/w spring批处理和quartz作业感到困惑。我的理解是

**Quartz:-**Quartz提供了两个框架,即调度器框架和作业框架(以防我不想使用spring批处理作业)。
**Spring Batch:-**它只提供了作业框架。我一直使用Quatz schecduler来调度Spring批处理作业。Spring也提供自己的调度程序吗?

2sbarzqh

2sbarzqh1#

Quartz是一个调度框架。就像“每个小时或每个月的最后一个星期五执行某件事”
Spring Batch是一个框架,它定义了将要执行的“某件事”。你可以定义一个作业,它由步骤组成。通常,一个步骤是由一个条目读取器,一个可选的条目处理器,和一个条目写入器组成的,但是你可以定义一个自定义步骤。你也可以告诉Spring Batch每10个条目提交一次,以及许多其他的东西。
您可以使用Quartz启动Spring批处理作业。
所以基本上Spring Batch定义了应该做什么,Quartz定义了应该什么时候做。

tkclm6bt

tkclm6bt2#

官方FAQ中有此问题的答案

Spring Batch与Quartz有何不同?

在一个解决方案中是否有它们的位置?Spring Batch和Quartz有不同的目标。Spring Batch提供处理大量数据的功能,而Quartz提供调度任务的功能。因此Quartz可以补充Spring Batch,一个常见的组合是使用Quartz作为SpringBatch作业的触发器,使用Cron表达式和SpringCore的便利性 *调度器工厂Bean *。

lx0bsm1f

lx0bsm1f3#

spring也提供自己的调度程序吗?
是,按如下方式使用SpringTaskScheduler

<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调度程序,如下所示:

<!-- 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

tv6aics1

tv6aics14#

Spring批次:从数据源读取数据(数据库中的表、平面文件等),处理这些数据。然后将数据存储在另一个数据源中,可能是另一种格式。我在博客中做了一个关于如何集成Spring Boot 2的tutorial,Spring批处理和Quartz。您可以集成Spring启动和Spring批处理,而跳过Quartz集成。Quartz是一个调度器,用于调度将来的任务,它有自己的元数据表来管理作业的状态。

相关问题