我不明白春天的计划任务和批处理作业之间的区别。 按计划任务,我指的是那些配置如下:
@EnableScheduling
public class AppConfig{
..
并使用
@Scheduled(fixedRate=550)
public void doSomething(){
..
批处理作业我指的是:
@EnableBatchProcessing
public class AppConfig{
..
以及许多实现,例如: 工作,工作启动器,步骤, ItemReader , ItemWriter ...等< / p>
我想知道除了实现差异之外它们之间的主要区别,而且我很好奇为什么要使用批处理作业并进行大量长期实现,同时我们可以使用简单的计划任务。我的意思是预定作业的实施非常简单,但根据批处理作业可能有缺点吗?
答案 0 :(得分:4)
Spring Scheduler用于根据计划编排某些内容。 Spring Batch是一个强大的批处理框架,专为构建复杂的计算问题而设计。 Spring Batch不处理作业的编排,只是构建它们。如果需要,可以使用Spring Scheduler编排Spring Batch作业。
答案 1 :(得分:2)
我能想到的两个方面:afaik当一个作业运行失败时,在2.运行中,它将以相同的作业参数运行..至少你可以配置这个我认为。和这种错误情况,你可以比在同一个地方手动编写所有代码(你的预定方法)更容易配置。其次,当你还必须从某个地方读取你的数据时,也许批处理为你的代码提供了一个结构,并在某处写...批处理有一些读者,处理器,写入器模式。还有一些自动创建的数据库表(BATCH_JOB_INSTANCE)和批处理工作结果..就像工作开始时等...
编辑:更多批处理原因:大量数据,事务管理,基于块的处理,声明式I / O,启动/停止/重启,重试/跳过,基于Web的管理界面。