2017-10-13 51 views
1

我不明白计划任务批处理作业之间的区别。 通过计划任务我的意思是被配置像这样的那些:春季计划任务和春季批处理作业之间有什么区别

@EnableScheduling 
public class AppConfig{ 
.. 

和像

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

使用批处理作业我的意思是这些:

@EnableBatchProcessing 
public class AppConfig{ 
.. 

和许多类似的实现: 工作工作发射器,个步骤ItemReaderItemWriter ...等

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

+1

看看我的回答https://stackoverflow.com/questions/33188368/spring-batch-vs-quartz-jobs这是石英,但基本上Quartz有一个类似的概念,@Scheduled,只是更强大。 –

+0

它不应该只是Quartz,因为在Spring引导中也有一个Quartz调度器,即使如此我想知道批处理作业和石英调度器之间的区别。 – wertigom

+0

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

回答

0

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

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

0

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