Spring批处理中的网格大小

nob*_*ody 5 java spring spring-batch

我有批处理作业,它从批量文件中读取数据,处理它并插入数据库.

我使用默认分区处理程序使用spring的分区功能.

    <bean class="org.spr...TaskExecutorPartitionHandler">
          <property name="taskExecutor" ref="taskExecutor"/>
          <property name="step" ref="readFromFile" />
          <property name="gridSize" value="10" />
    </bean>
Run Code Online (Sandbox Code Playgroud)

gridSize这里有什么意义?我已经以这样的方式配置它等于taskExecutor中的并发性.

tol*_*ius 5

gridSize指定data blocks要处理的数量(通常)相同的数量workers.将其视为map/reduce中的多个映射数据块.

StepExecutionSplitter给定数据的情况下,使用a PartitionHandler"分区"/将数据拆分为一个gridSize部分,并thread在您的情况下将每个部分发送给独立的worker => .

例如,DB中有10行需要处理.如果您将其gridSize设置为5,并且您使用的是简单的分区逻辑,则每个线程最终会有10/5 = 2行=> 5个线程,每个线程同时工作2行.