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

wer*_*gom 7 spring spring-batch spring-boot

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

@EnableScheduling 
public class AppConfig{
..
Run Code Online (Sandbox Code Playgroud)

并使用像

@Scheduled(fixedRate=550)
public void doSomething(){
..
Run Code Online (Sandbox Code Playgroud)

通过批处理作业我的意思是:

@EnableBatchProcessing
public class AppConfig{
..
Run Code Online (Sandbox Code Playgroud)

以及许多实现,例如: Jobs,Job launcher,Steps,ItemReader,ItemWriter ......等

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

Mic*_*lla 5

Spring Scheduler用于根据计划来编排某些内容。Spring Batch是一个健壮的批处理框架,旨在构建复杂的计算问题。Spring Batch不会处理工作的编排,而只是处理它们的构建。如果需要,可以使用Spring Scheduler编排Spring Batch作业。


akc*_*soy 3

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

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