Spring Batch中Step,Tasklet和Chunk的区别

时间:2016-10-14 10:48:43

标签: spring spring-batch

我是Spring Batch的新手。任何人都可以帮我解释Spring批处理中Step,Tasklet和Chunk之间的区别。另外,我还有一个疑问,如果我们想要在春季批次中运行一些并行的步骤。

1 个答案:

答案 0 :(得分:39)

嗯,这实际上是一个很好的问题。以下是配置示例:

<job id="sampleJob" job-repository="jobRepository">
    <step id="step1" next="step2">
        <tasklet transaction-manager="transactionManager">
            <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
        </tasklet>
    </step>
    <step id="step2">
         <tasklet ref="myTasklet"/>
    </step>
</job>

你有一份工作,这项工作是由步骤组成的。大多数情况下,这些步骤是连续的。您可以使用以下步骤定义工作的顺序:执行步骤1,然后执行步骤2,然后执行步骤3,如果步骤3失败,则可以执行步骤4,或者直接执行步骤5等。

步骤中完成的操作由tasklet表示,他们执行任务。

在Spring批处理中,您将主要进行面向块的处理:使用阅读器,处理器和编写器。从官方文档:

  

面向块的处理是指一次读取一个数据,   并在交易中创建将被写出的“块”   边界

但是您可以创建自己的tasklet,并在步骤中设置它。例如,执行SQL查询的tasklet。 (例如:Tasklet to delete a table in spring batch

因此,步骤在作业中排序,每个步骤都包含一个tasklet,它执行任务。其中一个tasklet(可能是最常用的一个)是面向块的处理tasklet。

如果你很好奇,这里是ChunkOrientedTasklet's doc。如您所见,它实现了Tasklet接口。

了解更多信息: http://docs.spring.io/spring-batch/reference/html/configureStep.html

是的,春季批次很适合于并行处理,使用流程:http://docs.spring.io/spring-batch/reference/html/scalability.html