我在我的批处理作业中使用步骤分区,该作业部署在分布式Spring XD环境中。我想知道TaskExecutorPartitionHandler在我们的案例中是否使用数据传输是Rabbit MQ吗?
<bean id="itemReader"
class="sample.ItemReader"
scope="step" >
<property name=requestList"
value="#{stepExecutionContext[test]}" />
</bean>
<bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="maxPoolSize" value="15" />
<property name="allowCoreThreadTimeOut" value="true" />
</bean>
<batch:job id='partitionJob' restartable="false"
incrementer="jobParametersIncrementerImpl" >
<batch:step id="startLoopStep">
<batch:tasklet ref="initTasklet" />
</batch:step>
<batch:step id='partitionerStep'>
<batch:partition step="slave" partitioner="rangePartitioner">
<batch:handler grid-size="${gridSize}" task-executor="taskExecutor" />
</batch:partition>
</batch:step>
</batch:job>
<batch:step id="slave">
<batch:tasklet>
<batch:chunk reader="itemReader" writer="itemWriter"
commit-interval="1" retry-limit="3" >
</batch:chunk>
</batch:tasklet>
</batch:step>
答案 0 :(得分:1)
没有。 TaskExecutorPartitionHandler
使用本地线程进行分区。 MessageChannelPartitionHandler
是您想要的分布式分区。 Spring XD附带了一个上下文文件,您可以导入该文件以便轻松地将分区添加到单步作业。 Spring XD中的大多数现成工作都使用此功能,可以作为参考。