我们在 Spring Batch 中面临这样的情况:步骤 write_count 有时小于 read_count,filter_count 和 read_skip_count、process_skip_count 和 write_skip_count 都为零,而作业已成功完成,无一例外。
我们仍在调查,但想知道这种情况是如何发生的以及是什么原因导致的?
只是补充一下,这一步我们有 2 个不同的编写器,并且我们使用分类器在某些条件下在它们之间进行切换。
这是步骤配置代码:
public Step step() {
return stepBuilderFactory.get("jobName")
.<InputTransaction, OutputTransaction>chunk(500)
.reader(itemReader)
.processor(itemProcessor)
.writer(classifierCompositeItemWriter())
.faultTolerant()
.skipLimit(Integer.MAX_VALUE)
.skip(RuntimeException.class)
.listener(adjustTransactionItemWriter)
.listener(adjustTransactionItemLogFileWriter)
.build();
}
@MahmoudBenHassine 会因为侦听器 Reza 添加到 stepExecution 而发生这种情况吗?这两个侦听器具有返回 ExitStatus.COMPLETED 的 afterStep 方法;
@Override
public ExitStatus afterStep(@NotNull StepExecution stepExecution) {
writer.close();
return ExitStatus.COMPLETED;
}