保存和访问JdbcCursorItemReader检索的行数

时间:2014-04-29 13:46:02

标签: spring-batch

我们的Spring Batch应用程序具有:从数据库读取的自定义 JdbcCursorItemReader ,以及自定义 JmsItemWriter ,它可以将标头添加到每条消息中。

这个想法是每条消息都有一个相关ID并且是一个集合的一部分。在JmsItemWriter中,我们需要访问项目阅读器检索的总行数。

这样做的最佳方法是什么?

由于

2 个答案:

答案 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