Spring 批次中 Step、Tasklet 和 Chunk 的区别

Difference between Step, Tasklet and Chunk in Spring Batch

spring批处理中的Step、Tasklet和Chunk有什么区别?

此外,如何通过 Spring 批处理并行执行步骤。 ?

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

<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 步,等等。

Step中完成的工作由tasklet表示,他们完成任务。

在 spring 批处理中,您将主要进行面向块的处理:使用 reader、处理器和编写器。来自官方文档:

Chunk oriented processing refers to reading the data one at a time, and creating 'chunks' that will be written out, within a transaction boundary

但是你可以制作你自己的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

是的,spring 批处理非常适合并行处理,使用流程:http://docs.spring.io/spring-batch/reference/html/scalability.html