Class RemotePartitioningMasterStepBuilder
- java.lang.Object
- org.springframework.batch.core.step.builder.StepBuilderHelper<PartitionStepBuilder>
- org.springframework.batch.core.step.builder.PartitionStepBuilder
- org.springframework.batch.integration.partition.RemotePartitioningMasterStepBuilder
public class RemotePartitioningMasterStepBuilder extends PartitionStepBuilder
Builder for a master step in a remote partitioning setup. This builder creates and sets aMessageChannelPartitionHandleron the master step.If no
messagingTemplateis provided throughmessagingTemplate(MessagingTemplate), this builder will create one and set its default channel to theoutputChannelprovided throughoutputChannel(MessageChannel).If a
messagingTemplateis provided, it is assumed that it is fully configured and that its default channel is set to an output channel on which requests to workers will be sent.- Since:
- 4.1
- Author:
- Mahmoud Ben Hassine
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.batch.core.step.builder.StepBuilderHelper
StepBuilderHelper.CommonStepProperties
Field Summary
Fields inherited from class org.springframework.batch.core.step.builder.StepBuilderHelper
logger, properties
Constructor Summary
Constructors Constructor Description RemotePartitioningMasterStepBuilder(java.lang.String stepName)Create a newRemotePartitioningMasterStepBuilder.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RemotePartitioningMasterStepBuilderaggregator(StepExecutionAggregator aggregator)Provide a step execution aggregator for aggregating partitioned step executions into a single result for thePartitionStepitself.RemotePartitioningMasterStepBuilderallowStartIfComplete(boolean allowStartIfComplete)RemotePartitioningMasterStepBuilderbeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)Set the bean factory.Stepbuild()RemotePartitioningMasterStepBuildergridSize(int gridSize)A hint to thePartitionStepBuilder.splitter(StepExecutionSplitter)about how many step executions are required.RemotePartitioningMasterStepBuilderinputChannel(org.springframework.messaging.MessageChannel inputChannel)Set the input channel on which replies from workers will be received.RemotePartitioningMasterStepBuilderjobExplorer(JobExplorer jobExplorer)Set the job explorer.RemotePartitioningMasterStepBuilderlistener(java.lang.Object listener)Registers objects using the annotation based listener configuration.RemotePartitioningMasterStepBuilderlistener(StepExecutionListener listener)RemotePartitioningMasterStepBuildermessagingTemplate(org.springframework.integration.core.MessagingTemplate messagingTemplate)Set theMessagingTemplateto use to send data to workers.RemotePartitioningMasterStepBuilderoutputChannel(org.springframework.messaging.MessageChannel outputChannel)Set the output channel on which requests to workers will be sent.RemotePartitioningMasterStepBuilderpartitioner(java.lang.String slaveStepName, Partitioner partitioner)Add a partitioner which can be used to create aStepExecutionSplitter.RemotePartitioningMasterStepBuilderpartitionHandler(PartitionHandler partitionHandler)This method will throw aUnsupportedOperationExceptionsince the partition handler of the master step will be automatically set to an instance ofMessageChannelPartitionHandler.RemotePartitioningMasterStepBuilderpollInterval(long pollInterval)How often to poll the job repository for the status of the workers.RemotePartitioningMasterStepBuilderrepository(JobRepository jobRepository)RemotePartitioningMasterStepBuildersplitter(StepExecutionSplitter splitter)Provide an explicitStepExecutionSplitterinstead of having one build from thePartitionStepBuilder.partitioner(String, Partitioner).RemotePartitioningMasterStepBuilderstartLimit(int startLimit)RemotePartitioningMasterStepBuilderstep(Step step)Provide an actual step instance to execute in parallel.RemotePartitioningMasterStepBuildertimeout(long timeout)When using job repository polling, the time limit to wait.RemotePartitioningMasterStepBuildertransactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager)Methods inherited from class org.springframework.batch.core.step.builder.PartitionStepBuilder
getAggregator, getGridSize, getPartitioner, getPartitionHandler, getSplitter, getStep, getStepName, getTaskExecutor, taskExecutor
Methods inherited from class org.springframework.batch.core.step.builder.StepBuilderHelper
enhance, getJobRepository, getName, getTransactionManager, isAllowStartIfComplete
Constructor Detail
RemotePartitioningMasterStepBuilder
public RemotePartitioningMasterStepBuilder(java.lang.String stepName)
Create a newRemotePartitioningMasterStepBuilder.- Parameters:
stepName- name of the master step
Method Detail
inputChannel
public RemotePartitioningMasterStepBuilder inputChannel(org.springframework.messaging.MessageChannel inputChannel)
Set the input channel on which replies from workers will be received.- Parameters:
inputChannel- the input channel- Returns:
- this builder instance for fluent chaining
outputChannel
public RemotePartitioningMasterStepBuilder outputChannel(org.springframework.messaging.MessageChannel outputChannel)
Set the output channel on which requests to workers will be sent. By using this setter, a default messaging template will be created and the output channel will be set as its default channel.Use either this setter or
messagingTemplate(MessagingTemplate)to provide a fully configured messaging template.- Parameters:
outputChannel- the output channel.- Returns:
- this builder instance for fluent chaining
- See Also:
messagingTemplate(MessagingTemplate)
messagingTemplate
public RemotePartitioningMasterStepBuilder messagingTemplate(org.springframework.integration.core.MessagingTemplate messagingTemplate)
Set theMessagingTemplateto use to send data to workers. The default channel of the messaging template must be set.Use either this setter to provide a fully configured messaging template or provide an output channel through
outputChannel(MessageChannel)and a default messaging template will be created.- Parameters:
messagingTemplate- the messaging template to use- Returns:
- this builder instance for fluent chaining
- See Also:
outputChannel(MessageChannel)
jobExplorer
public RemotePartitioningMasterStepBuilder jobExplorer(JobExplorer jobExplorer)
Set the job explorer.- Parameters:
jobExplorer- the job explorer to use.- Returns:
- this builder instance for fluent chaining
pollInterval
public RemotePartitioningMasterStepBuilder pollInterval(long pollInterval)
How often to poll the job repository for the status of the workers. Defaults to 10 seconds.- Parameters:
pollInterval- the poll interval value in milliseconds- Returns:
- this builder instance for fluent chaining
timeout
public RemotePartitioningMasterStepBuilder timeout(long timeout)
When using job repository polling, the time limit to wait. Defaults to -1 (no timeout).- Parameters:
timeout- the timeout value in milliseconds- Returns:
- this builder instance for fluent chaining
beanFactory
public RemotePartitioningMasterStepBuilder beanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Set the bean factory.- Parameters:
beanFactory- the bean factory to use- Returns:
- this builder instance for fluent chaining
build
public Step build()
- Overrides:
buildin classPartitionStepBuilder
repository
public RemotePartitioningMasterStepBuilder repository(JobRepository jobRepository)
- Overrides:
repositoryin classStepBuilderHelper<PartitionStepBuilder>
transactionManager
public RemotePartitioningMasterStepBuilder transactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager)
- Overrides:
transactionManagerin classStepBuilderHelper<PartitionStepBuilder>
partitioner
public RemotePartitioningMasterStepBuilder partitioner(java.lang.String slaveStepName, Partitioner partitioner)
Description copied from class:PartitionStepBuilderAdd a partitioner which can be used to create aStepExecutionSplitter. Use either this or an explicitPartitionStepBuilder.splitter(StepExecutionSplitter)but not both.- Overrides:
partitionerin classPartitionStepBuilder- Parameters:
slaveStepName- the name of the slave step (used to construct step execution names)partitioner- a partitioner to use- Returns:
- this for fluent chaining
gridSize
public RemotePartitioningMasterStepBuilder gridSize(int gridSize)
Description copied from class:PartitionStepBuilderA hint to thePartitionStepBuilder.splitter(StepExecutionSplitter)about how many step executions are required. If running locally or remotely through aPartitionStepBuilder.taskExecutor(TaskExecutor)determines precisely the number of step executions in the first attempt at a partition step execution.- Overrides:
gridSizein classPartitionStepBuilder- Parameters:
gridSize- the grid size- Returns:
- this for fluent chaining
step
public RemotePartitioningMasterStepBuilder step(Step step)
Description copied from class:PartitionStepBuilderProvide an actual step instance to execute in parallel. If an explicitPartitionStepBuilder.partitionHandler(PartitionHandler)is provided, the step is optional and is only used to extract configuration data (name and other basic properties of a step).- Overrides:
stepin classPartitionStepBuilder- Parameters:
step- a step to execute in parallel- Returns:
- this for fluent chaining
splitter
public RemotePartitioningMasterStepBuilder splitter(StepExecutionSplitter splitter)
Description copied from class:PartitionStepBuilderProvide an explicitStepExecutionSplitterinstead of having one build from thePartitionStepBuilder.partitioner(String, Partitioner). Useful if you need more control over the splitting.- Overrides:
splitterin classPartitionStepBuilder- Parameters:
splitter- a step execution splitter- Returns:
- this for fluent chaining
aggregator
public RemotePartitioningMasterStepBuilder aggregator(StepExecutionAggregator aggregator)
Description copied from class:PartitionStepBuilderProvide a step execution aggregator for aggregating partitioned step executions into a single result for thePartitionStepitself. Default is a simple implementation that works in most cases.- Overrides:
aggregatorin classPartitionStepBuilder- Parameters:
aggregator- a step execution aggregator- Returns:
- this for fluent chaining
startLimit
public RemotePartitioningMasterStepBuilder startLimit(int startLimit)
- Overrides:
startLimitin classStepBuilderHelper<PartitionStepBuilder>
listener
public RemotePartitioningMasterStepBuilder listener(java.lang.Object listener)
Description copied from class:StepBuilderHelperRegisters objects using the annotation based listener configuration.- Overrides:
listenerin classStepBuilderHelper<PartitionStepBuilder>- Parameters:
listener- the object that has a method configured with listener annotation- Returns:
- this for fluent chaining
listener
public RemotePartitioningMasterStepBuilder listener(StepExecutionListener listener)
- Overrides:
listenerin classStepBuilderHelper<PartitionStepBuilder>
allowStartIfComplete
public RemotePartitioningMasterStepBuilder allowStartIfComplete(boolean allowStartIfComplete)
- Overrides:
allowStartIfCompletein classStepBuilderHelper<PartitionStepBuilder>
partitionHandler
public RemotePartitioningMasterStepBuilder partitionHandler(PartitionHandler partitionHandler) throws java.lang.UnsupportedOperationException
This method will throw aUnsupportedOperationExceptionsince the partition handler of the master step will be automatically set to an instance ofMessageChannelPartitionHandler. When building a master step for remote partitioning using this builder, no partition handler must be provided.- Overrides:
partitionHandlerin classPartitionStepBuilder- Parameters:
partitionHandler- a partition handler- Returns:
- this builder instance for fluent chaining
- Throws:
java.lang.UnsupportedOperationException- if a partition handler is provided- See Also:
for setting up a default handler that works with a local or remote Step