弹簧计划任务和弹簧批作业之间有什么区别

时间:2017-10-13 12:06:51

标签: spring spring-boot spring-batch

我不明白春天的计划任务批处理作业之间的区别。 按计划任务,我指的是那些配置如下:

@EnableScheduling 
public class AppConfig{
..

并使用

@Scheduled(fixedRate=550)
public void doSomething(){
..

批处理作业我指的是:

@EnableBatchProcessing
public class AppConfig{
..

以及许多实现,例如: 工作工作启动器步骤 ItemReader ItemWriter ...等< / p>

我想知道除了实现差异之外它们之间的主要区别,而且我很好奇为什么要使用批处理作业并进行大量长期实现,同时我们可以使用简单的计划任务。我的意思是预定作业的实施非常简单,但根据批处理作业可能有缺点吗?

2 个答案:

答案 0 :(得分:4)

Spring Scheduler用于根据计划编排某些内容。 Spring Batch是一个强大的批处理框架,专为构建复杂的计算问题而设计。 Spring Batch不处理作业的编排,只是构建它们。如果需要,可以使用Spring Scheduler编排Spring Batch作业。

答案 1 :(得分:2)

我能想到的两个方面:afaik当一个作业运行失败时,在2.运行中,它将以相同的作业参数运行..至少你可以配置这个我认为。和这种错误情况,你可以比在同一个地方手动编写所有代码(你的预定方法)更容易配置。其次,当你还必须从某个地方读取你的数据时,也许批处理为你的代码提供了一个结构,并在某处写...批处理有一些读者,处理器,写入器模式。还有一些自动创建的数据库表(BATCH_JOB_INSTANCE)和批处理工作结果..就像工作开始时等...

编辑:更多批处理原因:大量数据,事务管理,基于块的处理,声明式I / O,启动/停止/重启,重试/跳过,基于Web的管理界面。