/** * Creates a {@link RemotePartitioningMasterStepBuilder} and initializes its job * repository, job explorer, bean factory and transaction manager. * @param name the name of the step * @return a {@link RemotePartitioningMasterStepBuilder} */ public RemotePartitioningMasterStepBuilder get(String name) { return new RemotePartitioningMasterStepBuilder(name) .repository(this.jobRepository) .jobExplorer(this.jobExplorer) .beanFactory(this.beanFactory) .transactionManager(this.transactionManager); }
/** * Creates a {@link RemotePartitioningWorkerStepBuilder} and initializes its job * repository, job explorer, bean factory and transaction manager. * @param name the name of the step * @return a {@link RemotePartitioningWorkerStepBuilder} */ public RemotePartitioningWorkerStepBuilder get(String name) { return new RemotePartitioningWorkerStepBuilder(name) .repository(this.jobRepository) .jobExplorer(this.jobExplorer) .beanFactory(this.beanFactory) .transactionManager(this.transactionManager); }
@Bean public RemotePartitioningMasterStepBuilderFactory remotePartitioningMasterStepBuilderFactory() { return new RemotePartitioningMasterStepBuilderFactory(this.jobRepository, this.jobExplorer, this.transactionManager); }
@Bean public Step masterStep() { return this.masterStepBuilderFactory.get("masterStep") .partitioner("workerStep", new BasicPartitioner()) .gridSize(GRID_SIZE) .outputChannel(requests()) .build(); }
@Bean public Step workerStep() { return this.workerStepBuilderFactory.get("workerStep") .inputChannel(requests()) .outputChannel(replies()) .tasklet(tasklet(null)) .build(); }
@Test public void testGetStep() throws Exception { beanFactory.registerSingleton("foo", new StubStep("foo")); stepLocator.setBeanFactory(beanFactory); assertNotNull(stepLocator.getStep("foo")); }
@Test public void testGetStepNames() throws Exception { beanFactory.registerSingleton("foo", new StubStep("foo")); beanFactory.registerSingleton("bar", new StubStep("bar")); stepLocator.setBeanFactory(beanFactory); assertEquals(2, stepLocator.getStepNames().size()); }
@Bean public Step workerStep() { return this.workerStepBuilderFactory.get("workerStep") .inputChannel(requests()) .tasklet(tasklet(null)) .build(); }
private Message<StepExecutionRequest> createMessage(int sequenceNumber, int sequenceSize, StepExecutionRequest stepExecutionRequest, PollableChannel replyChannel) { return MessageBuilder.withPayload(stepExecutionRequest).setSequenceNumber(sequenceNumber) .setSequenceSize(sequenceSize) .setCorrelationId(stepExecutionRequest.getJobExecutionId() + ":" + stepExecutionRequest.getStepName()) .setReplyChannel(replyChannel) .build(); } }
@Test public void outputChannelMustNotBeNull() { // given this.expectedException.expect(IllegalArgumentException.class); this.expectedException.expectMessage("outputChannel must not be null"); // when new RemotePartitioningWorkerStepBuilder("step").outputChannel(null); // then // expected exception }
@Test public void pollIntervalMustBeGreaterThanZero() { // given this.expectedException.expect(IllegalArgumentException.class); this.expectedException.expectMessage("The poll interval must be greater than zero"); // when new RemotePartitioningMasterStepBuilder("step").pollInterval(-1); // then // expected exception }
@Override public PartitionStepBuilder partitioner(String stepName, Partitioner partitioner) { configureWorkerIntegrationFlow(); return super.partitioner(stepName, partitioner); }
@Bean public RemotePartitioningWorkerStepBuilderFactory remotePartitioningWorkerStepBuilderFactory() { return new RemotePartitioningWorkerStepBuilderFactory(this.jobRepository, this.jobExplorer, this.transactionManager); }
@Bean public Step masterStep() { return this.masterStepBuilderFactory.get("masterStep") .partitioner("workerStep", new BasicPartitioner()) .gridSize(GRID_SIZE) .outputChannel(requests()) .inputChannel(replies()) .build(); }
@Override public TaskletStepBuilder tasklet(Tasklet tasklet) { configureWorkerIntegrationFlow(); return super.tasklet(tasklet); }
@Override public <I, O> SimpleStepBuilder<I, O> chunk(CompletionPolicy completionPolicy) { configureWorkerIntegrationFlow(); return super.chunk(completionPolicy); }
@Override public JobStepBuilder job(Job job) { configureWorkerIntegrationFlow(); return super.job(job); }
@Override public <I, O> SimpleStepBuilder<I, O> chunk(int chunkSize) { configureWorkerIntegrationFlow(); return super.chunk(chunkSize); }
@Override public PartitionStepBuilder partitioner(Step step) { configureWorkerIntegrationFlow(); return super.partitioner(step); }
@Override public FlowStepBuilder flow(Flow flow) { configureWorkerIntegrationFlow(); return super.flow(flow); }