Migrating to use ApplicationContextRunner or ImportAutoConfiguration with SpringApp.run, instead of SpringApplicationBuilder, because builder does not handle AutoConfiguration properly SimpleTaskAutoConfiguration now has an annotation AutoConfigureBefore the BatchTaskAutoConfig so that it is processed prior. THis is so that that BatchTaskAutoConfig can create the appropriate beans SimpleTaskAutoConfiguration has new annotations so that it is AutoConfigured after BindingServiceConfiguration and after SimpleTaskAutoConfiguration. This is so that it does not attempt to start emitting messages before stream is ready and it can create the appropriate beans after SimpleTaskAutoConfiguration has run. Renamed SimpleTaskConfiguration to SimpleTaskAutoConfiguration. Task version updated to 2.1.0 Added missing headers Updated documentation. Deprecated EnableTask Added ability to disable Task autoconfiguration. Removed @EnableTask from tests Resolves #439 Resolves #440 Resolves #448 Resolves #466
77 lines
2.5 KiB
Java
77 lines
2.5 KiB
Java
/*
|
|
* Copyright 2016 the original author or authors.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package configuration;
|
|
|
|
import org.springframework.batch.core.Job;
|
|
import org.springframework.batch.core.Step;
|
|
import org.springframework.batch.core.StepContribution;
|
|
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
|
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
|
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
|
import org.springframework.batch.core.scope.context.ChunkContext;
|
|
import org.springframework.batch.core.step.tasklet.Tasklet;
|
|
import org.springframework.batch.item.ItemProcessor;
|
|
import org.springframework.batch.repeat.RepeatStatus;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
/**
|
|
* @author Glenn Renfro
|
|
*/
|
|
@Configuration
|
|
@EnableBatchProcessing
|
|
public class JobSkipConfiguration {
|
|
@Autowired
|
|
private JobBuilderFactory jobBuilderFactory;
|
|
|
|
@Autowired
|
|
private StepBuilderFactory stepBuilderFactory;
|
|
|
|
@Bean
|
|
public Job job() {
|
|
return jobBuilderFactory.get("job")
|
|
.start(step1()).next(step2())
|
|
.build();
|
|
}
|
|
|
|
@Bean
|
|
public Step step1() {
|
|
return stepBuilderFactory.get("step1").tasklet(new Tasklet() {
|
|
@Override
|
|
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
|
|
System.out.println("Executed");
|
|
return RepeatStatus.FINISHED;
|
|
}
|
|
}).build();
|
|
}
|
|
|
|
@Bean
|
|
public Step step2() {
|
|
return stepBuilderFactory.get("step2").chunk(3).faultTolerant().skip(IllegalStateException.class).skipLimit(100)
|
|
.reader(new SkipItemReader())
|
|
.processor(new ItemProcessor<Object, Object>() {
|
|
@Override
|
|
public String process(Object item) throws Exception {
|
|
return String.valueOf(Integer.parseInt((String) item) * -1);
|
|
}
|
|
})
|
|
.writer( new SkipItemWriter() ).build();
|
|
}
|
|
|
|
}
|