org.springframework.batch.core.partition.support
Class TaskExecutorPartitionHandler

java.lang.Object
  extended by org.springframework.batch.core.partition.support.AbstractPartitionHandler
      extended by org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler
All Implemented Interfaces:
PartitionHandler, StepHolder, org.springframework.beans.factory.InitializingBean

public class TaskExecutorPartitionHandler
extends AbstractPartitionHandler
implements StepHolder, org.springframework.beans.factory.InitializingBean

A PartitionHandler that uses a TaskExecutor to execute the partitioned Step locally in multiple threads. This can be an effective approach for scaling batch steps that are IO intensive, like directory and filesystem scanning and copying.

By default, the thread pool is synchronous.

Since:
2.0
Author:
Sebastien Gerard, Dave Syer

Constructor Summary
TaskExecutorPartitionHandler()
           
 
Method Summary
 void afterPropertiesSet()
           
protected  FutureTask<StepExecution> createTask(Step step, StepExecution stepExecution)
          Creates the task executing the given step in the context of the given execution.
protected  Set<StepExecution> doHandle(StepExecution masterStepExecution, Set<StepExecution> partitionStepExecutions)
          Executes the specified StepExecution instances and returns an updated view of them.
 Step getStep()
          The step instance that will be executed in parallel by this handler.
 void setStep(Step step)
          Setter for the Step that will be used to execute the partitioned StepExecution.
 void setTaskExecutor(org.springframework.core.task.TaskExecutor taskExecutor)
          Setter for the TaskExecutor that is used to farm out step executions to multiple threads.
 
Methods inherited from class org.springframework.batch.core.partition.support.AbstractPartitionHandler
getGridSize, handle, setGridSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TaskExecutorPartitionHandler

public TaskExecutorPartitionHandler()
Method Detail

afterPropertiesSet

public void afterPropertiesSet()
                        throws Exception
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
Throws:
Exception

setTaskExecutor

public void setTaskExecutor(org.springframework.core.task.TaskExecutor taskExecutor)
Setter for the TaskExecutor that is used to farm out step executions to multiple threads.

Parameters:
taskExecutor - a TaskExecutor

setStep

public void setStep(Step step)
Setter for the Step that will be used to execute the partitioned StepExecution. This is a regular Spring Batch step, with all the business logic required to complete an execution based on the input parameters in its StepExecution context.

Parameters:
step - the Step instance to use to execute business logic

getStep

public Step getStep()
The step instance that will be executed in parallel by this handler.

Specified by:
getStep in interface StepHolder
Returns:
the step instance that will be used
See Also:
StepHolder.getStep()

doHandle

protected Set<StepExecution> doHandle(StepExecution masterStepExecution,
                                      Set<StepExecution> partitionStepExecutions)
                               throws Exception
Description copied from class: AbstractPartitionHandler
Executes the specified StepExecution instances and returns an updated view of them. Throws an Exception if anything goes wrong.

Specified by:
doHandle in class AbstractPartitionHandler
Parameters:
masterStepExecution - the whole partition execution
partitionStepExecutions - the StepExecution instances to execute
Returns:
an updated view of these completed StepExecution instances
Throws:
Exception - if anything goes wrong. This allows implementations to be liberal and rely on the caller to translate an exception into a step failure as necessary.

createTask

protected FutureTask<StepExecution> createTask(Step step,
                                               StepExecution stepExecution)
Creates the task executing the given step in the context of the given execution.

Parameters:
step - the step to execute
stepExecution - the given execution
Returns:
the task executing the given step


Copyright © 2013 SpringSource. All Rights Reserved.