|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.batch.repeat.support.RepeatTemplate org.springframework.batch.repeat.support.TaskExecutorRepeatTemplate
public class TaskExecutorRepeatTemplate
Provides RepeatOperations
support including interceptors that can be
used to modify or monitor the behaviour at run time.
This implementation is sufficient to be used to configure transactional
behaviour for each item by making the RepeatCallback
transactional,
or for the whole batch by making the execute method transactional (but only
then if the task executor is synchronous).
This class is thread safe if its collaborators are thread safe (interceptors,
terminationPolicy, callback). Normally this will be the case, but clients
need to be aware that if the task executor is asynchronous, then the other
collaborators should be also. In particular the RepeatCallback
that
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).
Field Summary | |
---|---|
static int |
DEFAULT_THROTTLE_LIMIT
Default limit for maximum number of concurrent unfinished results allowed by the template. |
Fields inherited from class org.springframework.batch.repeat.support.RepeatTemplate |
---|
logger |
Constructor Summary | |
---|---|
TaskExecutorRepeatTemplate()
|
Method Summary | |
---|---|
protected RepeatInternalState |
createInternalState(RepeatContext context)
Create an internal state object that is used to store data needed internally in the scope of an iteration. |
protected ExitStatus |
getNextResult(RepeatContext context,
RepeatCallback callback,
RepeatInternalState state)
Use the setTaskExecutor(TaskExecutor) to generate a result. |
void |
setTaskExecutor(TaskExecutor taskExecutor)
Setter for task executor to be used to run the individual item callbacks. |
void |
setThrottleLimit(int throttleLimit)
Public setter for the throttle limit. |
protected boolean |
waitForResults(RepeatInternalState state)
Wait for all the results to appear on the queue and execute the after interceptors for each one. |
Methods inherited from class org.springframework.batch.repeat.support.RepeatTemplate |
---|
canContinue, executeAfterInterceptors, isComplete, isComplete, iterate, registerListener, setCompletionPolicy, setExceptionHandler, setListeners, start, update |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFAULT_THROTTLE_LIMIT
getNextResult(RepeatContext, RepeatCallback, RepeatInternalState)
.
Constructor Detail |
---|
public TaskExecutorRepeatTemplate()
Method Detail |
---|
public void setTaskExecutor(TaskExecutor taskExecutor)
taskExecutor
- a TaskExecutor
IllegalArgumentException
- if the argument is nullprotected ExitStatus 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.
getNextResult
in class RepeatTemplate
context
- current BatchContext.callback
- the callback to execute.state
- maintained by the implementation.
Throwable
RepeatTemplate.isComplete(RepeatContext)
protected boolean waitForResults(RepeatInternalState state)
waitForResults
in class RepeatTemplate
state
- the internal state.
RepeatTemplate.canContinue(ExitStatus)
is true for all results
retrieved.RepeatTemplate.waitForResults(org.springframework.batch.repeat.support.RepeatInternalState)
protected RepeatInternalState createInternalState(RepeatContext context)
RepeatTemplate
createInternalState
in class RepeatTemplate
context
- the current RepeatContext
RepeatInternalState
instance.public void setThrottleLimit(int throttleLimit)
TaskExecutor
. Default value is DEFAULT_THROTTLE_LIMIT
.
N.B. when used with a thread pooled TaskExecutor
it doesn't make
sense for the throttle limit to be less than the thread pool size.
throttleLimit
- the throttleLimit to set.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |