我是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等 .
在步骤中完成的操作由tasklet表示,他们执行任务 .
在Spring批处理中,您将主要进行面向块的处理:使用读取器,处理器和编写器 . 从官方文档:
面向块的处理是指一次读取一个数据,并在事务边界内创建将被写出的“块”
但是您可以创建自己的tasklet,并在步骤中设置它 . 例如,执行SQL查询的tasklet . (例如:Tasklet to delete a table in spring batch)
因此,步骤在作业中排序,每个步骤都包含一个tasklet,它执行任务 . 其中一个tasklet(可能是最常用的一个)是面向块的处理tasklet .
如果你很好奇,这里是ChunkOrientedTasklet's doc . 如您所见,它实现了 Tasklet 接口 .
Tasklet
有关更多信息:http://docs.spring.io/spring-batch/reference/html/configureStep.html
是的, Spring 季批次很适合使用流程进行并行处理:http://docs.spring.io/spring-batch/reference/html/scalability.html
1 回答
嗯,这实际上是一个很好的问题 . 这是一个配置示例:
你有一份工作,这项工作是由步骤组成的 . 大多数情况下,这些步骤是连续的 . 您可以通过以下步骤定义您的工作必须完成的顺序:您执行步骤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
是的, Spring 季批次很适合使用流程进行并行处理:http://docs.spring.io/spring-batch/reference/html/scalability.html