Java Spring批处理分区:具有多个步骤的从属步骤
给定一个使用分区的Spring批处理作业,是否可以有多个分区步骤 例如:Java Spring批处理分区:具有多个步骤的从属步骤,java,spring,spring-batch,partitioning,Java,Spring,Spring Batch,Partitioning,给定一个使用分区的Spring批处理作业,是否可以有多个分区步骤 例如: <batch:step id="masterStep" next="nextStep"> <partition step="slaveStep1" partitioner="dataPartitioner"> <batch:handler grid-size="10" task-executor="taskE
<batch:step id="masterStep"
next="nextStep">
<partition step="slaveStep1"
partitioner="dataPartitioner">
<batch:handler grid-size="10" task-executor="taskExecutor" />
</partition>
</batch:step>
在上述示例中,是否可以将另一个分区步骤
添加到主步骤
(最好不需要为每个分区步骤提供分区器)?如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区一个接一个地执行
是否可以有多个分区步骤
是的,在一个作业中可以有多个分区步骤
在上面的示例中,是否可以向主步骤添加另一个分区步骤(最好不需要为每个分区步骤提供分区器)
这意味着您将拥有“嵌套的”分区步骤:一个分区步骤,其中每个工作步骤都是一个分区步骤。XSD不允许您这样做,但您可能可以使用Java配置来完成(我从未尝试过,但在我看来,这会使事情变得非常复杂)
如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区一个接一个地执行
你可以试着用a来做这个。其思想是让一个作业具有一个分区步骤,其中每个工作步骤都是一个
作业步骤
。现在,每个worker都是一个包含多个常规步骤(您希望为每个分区运行的步骤)的作业。您答案的最后一段似乎与我的问题最相关。这意味着在我的示例中,我可以让slaveStep
封装slaveJob
。换句话说,我可以将slaveStep1
定义为
,其中slaveJob
可以包含尽可能多的步骤
定义?在这里,每个新分区将执行一个新的slaveStep
实例,该实例又将在一个绝望的线程中执行一个新的slaveJob
实例?是的,如果您决定走这条路线,那么每个工作步骤实际上都可以是一个“子”作业。看起来这是无法完成的。有时我会得到一个异常,说“此作业的作业执行已在运行”,而其他时候我会在MapExecutionContextDao.java:130
上得到一个slaveJob
的NullPointerException
。看起来slaveJob
无法访问由dataPartitioner
添加的stepExecutionContext
中的值,因为它们显示为null
,即使它们是由dataPartitioner
添加到stepExecutionContext
中的