我们的Spring Batch应用程序具有:从数据库读取的自定义 JdbcCursorItemReader ,以及自定义 JmsItemWriter ,它可以将标头添加到每条消息中。
这个想法是每条消息都有一个相关ID并且是一个集合的一部分。在JmsItemWriter中,我们需要访问项目阅读器检索的总行数。
这样做的最佳方法是什么?
由于
答案 0 :(得分:0)
如果需要访问TOTAL行数(例如select count(*) from table
),最好的选择是创建上一步,执行计数并将结果放入执行上下文,以便在后续步骤中访问它。
如果您需要当前记录JdbcCursorItemReader
的数量,则从AbstractItemCountingItemStreamItemReader
答案 1 :(得分:0)
最简单的方法是使用StepListener,请参见以下示例:
@Component
public class StepListener extends StepExecutionListenerSupport {
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
// here, you can debug stepExecution to get some values like "readCount" :
logger.info(stepExecution.getReadCount());
// you also have commitCount, writeCount, rollbackCount, readSkipCount, writeSkipCount, processSkipCount, filterCount
// check stepExecution.getSummary for a nice one line info
logger.info(stepExecution.getSummary());
return null;
}
}
请不要忘记在“批量配置”步骤中配置stepListener