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 aMessageChannelPartitionHandler
on the master step.If no
messagingTemplate
is provided throughmessagingTemplate(MessagingTemplate)
, this builder will create one and set its default channel to theoutputChannel
provided throughoutputChannel(MessageChannel)
.If a
messagingTemplate
is 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 RemotePartitioningMasterStepBuilder
aggregator(StepExecutionAggregator aggregator)
Provide a step execution aggregator for aggregating partitioned step executions into a single result for thePartitionStep
itself.RemotePartitioningMasterStepBuilder
allowStartIfComplete(boolean allowStartIfComplete)
RemotePartitioningMasterStepBuilder
beanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Set the bean factory.Step
build()
RemotePartitioningMasterStepBuilder
gridSize(int gridSize)
A hint to thePartitionStepBuilder.splitter(StepExecutionSplitter)
about how many step executions are required.RemotePartitioningMasterStepBuilder
inputChannel(org.springframework.messaging.MessageChannel inputChannel)
Set the input channel on which replies from workers will be received.RemotePartitioningMasterStepBuilder
jobExplorer(JobExplorer jobExplorer)
Set the job explorer.RemotePartitioningMasterStepBuilder
listener(java.lang.Object listener)
Registers objects using the annotation based listener configuration.RemotePartitioningMasterStepBuilder
listener(StepExecutionListener listener)
RemotePartitioningMasterStepBuilder
messagingTemplate(org.springframework.integration.core.MessagingTemplate messagingTemplate)
Set theMessagingTemplate
to use to send data to workers.RemotePartitioningMasterStepBuilder
outputChannel(org.springframework.messaging.MessageChannel outputChannel)
Set the output channel on which requests to workers will be sent.RemotePartitioningMasterStepBuilder
partitioner(java.lang.String slaveStepName, Partitioner partitioner)
Add a partitioner which can be used to create aStepExecutionSplitter
.RemotePartitioningMasterStepBuilder
partitionHandler(PartitionHandler partitionHandler)
This method will throw aUnsupportedOperationException
since the partition handler of the master step will be automatically set to an instance ofMessageChannelPartitionHandler
.RemotePartitioningMasterStepBuilder
pollInterval(long pollInterval)
How often to poll the job repository for the status of the workers.RemotePartitioningMasterStepBuilder
repository(JobRepository jobRepository)
RemotePartitioningMasterStepBuilder
splitter(StepExecutionSplitter splitter)
Provide an explicitStepExecutionSplitter
instead of having one build from thePartitionStepBuilder.partitioner(String, Partitioner)
.RemotePartitioningMasterStepBuilder
startLimit(int startLimit)
RemotePartitioningMasterStepBuilder
step(Step step)
Provide an actual step instance to execute in parallel.RemotePartitioningMasterStepBuilder
timeout(long timeout)
When using job repository polling, the time limit to wait.RemotePartitioningMasterStepBuilder
transactionManager(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 theMessagingTemplate
to 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:
build
in classPartitionStepBuilder
repository
public RemotePartitioningMasterStepBuilder repository(JobRepository jobRepository)
- Overrides:
repository
in classStepBuilderHelper<PartitionStepBuilder>
transactionManager
public RemotePartitioningMasterStepBuilder transactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager)
- Overrides:
transactionManager
in classStepBuilderHelper<PartitionStepBuilder>
partitioner
public RemotePartitioningMasterStepBuilder partitioner(java.lang.String slaveStepName, Partitioner partitioner)
Description copied from class:PartitionStepBuilder
Add a partitioner which can be used to create aStepExecutionSplitter
. Use either this or an explicitPartitionStepBuilder.splitter(StepExecutionSplitter)
but not both.- Overrides:
partitioner
in 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:PartitionStepBuilder
A 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:
gridSize
in classPartitionStepBuilder
- Parameters:
gridSize
- the grid size- Returns:
- this for fluent chaining
step
public RemotePartitioningMasterStepBuilder step(Step step)
Description copied from class:PartitionStepBuilder
Provide 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:
step
in classPartitionStepBuilder
- Parameters:
step
- a step to execute in parallel- Returns:
- this for fluent chaining
splitter
public RemotePartitioningMasterStepBuilder splitter(StepExecutionSplitter splitter)
Description copied from class:PartitionStepBuilder
Provide an explicitStepExecutionSplitter
instead of having one build from thePartitionStepBuilder.partitioner(String, Partitioner)
. Useful if you need more control over the splitting.- Overrides:
splitter
in classPartitionStepBuilder
- Parameters:
splitter
- a step execution splitter- Returns:
- this for fluent chaining
aggregator
public RemotePartitioningMasterStepBuilder aggregator(StepExecutionAggregator aggregator)
Description copied from class:PartitionStepBuilder
Provide a step execution aggregator for aggregating partitioned step executions into a single result for thePartitionStep
itself. Default is a simple implementation that works in most cases.- Overrides:
aggregator
in classPartitionStepBuilder
- Parameters:
aggregator
- a step execution aggregator- Returns:
- this for fluent chaining
startLimit
public RemotePartitioningMasterStepBuilder startLimit(int startLimit)
- Overrides:
startLimit
in classStepBuilderHelper<PartitionStepBuilder>
listener
public RemotePartitioningMasterStepBuilder listener(java.lang.Object listener)
Description copied from class:StepBuilderHelper
Registers objects using the annotation based listener configuration.- Overrides:
listener
in 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:
listener
in classStepBuilderHelper<PartitionStepBuilder>
allowStartIfComplete
public RemotePartitioningMasterStepBuilder allowStartIfComplete(boolean allowStartIfComplete)
- Overrides:
allowStartIfComplete
in classStepBuilderHelper<PartitionStepBuilder>
partitionHandler
public RemotePartitioningMasterStepBuilder partitionHandler(PartitionHandler partitionHandler) throws java.lang.UnsupportedOperationException
This method will throw aUnsupportedOperationException
since 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:
partitionHandler
in 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