|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.springframework.batch.integration.partition.MessageChannelPartitionHandler
@MessageEndpoint public class MessageChannelPartitionHandler
A PartitionHandler that uses MessageChannel instances to send instructions to remote workers and
receive their responses. The MessageChannel provides a nice abstraction so that the location of the workers
and the transport used to communicate with them can be changed at run time. The communication with the remote workers
does not need to be transactional or have guaranteed delivery, so a local thread pool based implementation works as
well as a remote web service or JMS implementation. If a remote worker fails or doesn't send a reply message, the job
will fail and can be restarted to pick up missing messages and processing. The remote workers need access to the
Spring Batch JobRepository so that the shared state across those restarts can be managed centrally.
| Constructor Summary | |
|---|---|
MessageChannelPartitionHandler()
|
|
| Method Summary | |
|---|---|
void |
afterPropertiesSet()
|
List<?> |
aggregate(List<?> messages)
|
Collection<StepExecution> |
handle(StepExecutionSplitter stepExecutionSplitter,
StepExecution masterStepExecution)
Sends StepExecutionRequest objects to the request channel of the MessagingOperations, and then
receives the result back as a list of StepExecution on a reply channel. |
void |
setGridSize(int gridSize)
Passed to the StepExecutionSplitter in the handle(StepExecutionSplitter, StepExecution) method,
instructing it how many StepExecution instances are required, ideally. |
void |
setMessagingOperations(org.springframework.integration.core.MessagingOperations messagingGateway)
A pre-configured gateway for sending and receiving messages to the remote workers. |
void |
setStepName(String stepName)
The name of the Step that will be used to execute the partitioned StepExecution. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public MessageChannelPartitionHandler()
| Method Detail |
|---|
public void afterPropertiesSet()
throws Exception
Exceptionpublic void setMessagingOperations(org.springframework.integration.core.MessagingOperations messagingGateway)
StepExecutionRequest payloadsStepExecution results
messagingGateway - the MessagingOperations to setpublic void setGridSize(int gridSize)
StepExecutionSplitter in the handle(StepExecutionSplitter, StepExecution) method,
instructing it how many StepExecution instances are required, ideally. The StepExecutionSplitter
is allowed to ignore the grid size in the case of a restart, since the input data partitions must be preserved.
gridSize - the number of step executions that will be createdpublic void setStepName(String stepName)
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. The name will be translated into a Step instance by the
remote worker.
stepName - the name of the Step instance to execute business logic
@Aggregator(sendPartialResultsOnExpiry=true)
public List<?> aggregate(@Payloads
List<?> messages)
messages - the messages to be aggregated
public Collection<StepExecution> handle(StepExecutionSplitter stepExecutionSplitter,
StepExecution masterStepExecution)
throws Exception
StepExecutionRequest objects to the request channel of the MessagingOperations, and then
receives the result back as a list of StepExecution on a reply channel. Use the aggregate(List)
method as an aggregator of the individual remote replies. The receive timeout needs to be set realistically in
the MessagingOperations and the aggregator, so that there is a good chance of all work being done.
handle in interface PartitionHandlerExceptionPartitionHandler.handle(StepExecutionSplitter, StepExecution)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||