我有一个现有的春季批处理项目,该项目有多个步骤。我想修改一个步骤,以便我可以停止作业:。jobExecution.getStatus() == STOPPED
我的步骤 :
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
private StepReader reader;
@Autowired
private StepProcessor processor;
@Autowired
private StepWriter writer;
@Autowired
public GenericListener listener;
@Bean
@JobScope
@Qualifier("mystep")
public Step MyStep() throws ReaderException {
return stepBuilderFactory.get("mystep")
.reader(reader.read())
.listener(listener)
.processor(processor)
.writer(writer)
.build();
}
GenericListener在基本上写入日志的方法之前和之后实现和重写。ItemReadListener, ItemProcessListener, ItemWriteListener
这里的重点是返回的类及其方法:StepReaderread()FlatFileItemReader
@Component
public class StepReader {
public static final String DELIMITER = "|";
@Autowired
private ClassToAccessProperties classToAccessProperties;
private Logger log = Logger.create(StepReader.class);
@Autowired
private FlatFileItemReaderFactory<MyObject> flatFileItemReaderFactory;
public ItemReader<MyObject> read() throws ReaderException {
try {
String csv = classToAccessProperties.getInputCsv();
FlatFileItemReader<MyObject> reader = flatFileItemReaderFactory.create(csv, getLineMapper());
return reader;
} catch (ReaderException | EmptyInputfileException | IOException e) {
throw new ReaderException(e);
} catch (NoInputFileException e) {
log.info("Oh no !! No input file");
// Here I want to stop the job
return null;
}
}
我试图实现,但没有运气,我认为是因为方法期望从方法中得到一个,它不关心类的其余部分。StepExecutionListenerStepReaderreaderStepBuilderFactoryItemReaderreader.read()
我正在寻找想法或解决方案,以便能够在被捕获时停止整个工作(而不是失败)。NoInputFileException
爪哇岛春天弹簧批次
呼啦一阵风
相关分类