public class TaskExecutorRepeatTemplate extends RepeatTemplate
RepeatOperationssupport including interceptors that can be used to modify or monitor the behaviour at run time.
RepeatCallbacktransactional, or for the whole batch by making the execute method transactional (but only then if the task executor is synchronous).
RepeatCallbackthat is wrapped in the execute method must be thread safe - often it is based on some form of data source, which itself should be both thread safe and transactional (multiple threads could be accessing it at any given time, and each thread would have its own transaction).
|Modifier and Type||Field and Description|
Default limit for maximum number of concurrent unfinished results allowed by the template.
|Constructor and Description|
|Modifier and Type||Method and Description|
Create an internal state object that is used to store data needed internally in the scope of an iteration.
Setter for task executor to be used to run the individual item callbacks.
Public setter for the throttle limit.
Wait for all the results to appear on the queue and execute the after interceptors for each one.
canContinue, executeAfterInterceptors, isComplete, isComplete, iterate, registerListener, setCompletionPolicy, setExceptionHandler, setListeners, start, update
public static final int DEFAULT_THROTTLE_LIMIT
getNextResult(RepeatContext, RepeatCallback, RepeatInternalState).
public void setThrottleLimit(int throttleLimit)
TaskExecutor. Default value is
DEFAULT_THROTTLE_LIMIT. N.B. when used with a thread pooled
TaskExecutorthe thread pool might prevent the throttle limit actually being reached (so make the core pool size larger than the throttle limit if possible).
throttleLimit- the throttleLimit to set.
public void setTaskExecutor(org.springframework.core.task.TaskExecutor taskExecutor)
taskExecutor- a TaskExecutor
IllegalArgumentException- if the argument is null
protected RepeatStatus getNextResult(RepeatContext context, RepeatCallback callback, RepeatInternalState state) throws Throwable
setTaskExecutor(TaskExecutor)to generate a result. The internal state in this case is a queue of unfinished result holders of type
ResultHolder. The holder with the return value should not be on the queue when this method exits. The queue is scoped in the calling method so there is no need to synchronize access.
context- current BatchContext.
callback- the callback to execute.
state- maintained by the implementation.
protected boolean waitForResults(RepeatInternalState state)
state- the internal state.
RepeatTemplate.canContinue(RepeatStatus)is true for all results retrieved.
protected RepeatInternalState createInternalState(RepeatContext context)
context- the current
Copyright © 2014 Pivotal. All rights reserved.