Enable Spring Batch Integration features and provide a base configuration for
setting up remote chunking or partitioning infrastructure beans.
By adding this annotation on a
Configuration
class, it will be possible to autowire the following beans:
For remote chunking, an example of a configuration class would be:
@Configuration
@EnableBatchIntegration
@EnableBatchProcessing
public class RemoteChunkingAppConfig {
@Autowired
private RemoteChunkingManagerStepBuilderFactory managerStepBuilderFactory;
@Autowired
private RemoteChunkingWorkerBuilder workerBuilder;
@Bean
public TaskletStep managerStep() {
return this.managerStepBuilderFactory
.get("managerStep")
.chunk(100)
.reader(itemReader())
.outputChannel(outgoingRequestsToWorkers())
.inputChannel(incomingRepliesFromWorkers())
.build();
}
@Bean
public IntegrationFlow worker() {
return this.workerBuilder
.itemProcessor(itemProcessor())
.itemWriter(itemWriter())
.inputChannel(incomingRequestsFromManager())
.outputChannel(outgoingRepliesToManager())
.build();
}
// Middleware beans omitted
}
For remote partitioning, an example of a configuration class would be:
@Configuration
@EnableBatchIntegration
@EnableBatchProcessing
public class RemotePartitioningAppConfig {
@Autowired
private RemotePartitioningManagerStepBuilderFactory managerStepBuilderFactory;
@Autowired
private RemotePartitioningWorkerStepBuilderFactory workerStepBuilderFactory;
@Bean
public Step managerStep() {
return this.managerStepBuilderFactory
.get("managerStep")
.partitioner("workerStep", partitioner())
.gridSize(10)
.outputChannel(outgoingRequestsToWorkers())
.inputChannel(incomingRepliesFromWorkers())
.build();
}
@Bean
public Step workerStep() {
return this.workerStepBuilderFactory
.get("workerStep")
.inputChannel(incomingRequestsFromManager())
.outputChannel(outgoingRepliesToManager())
.chunk(100)
.reader(itemReader())
.processor(itemProcessor())
.writer(itemWriter())
.build();
}
// Middleware beans omitted
}