在Spring Batch中,我想对正在读取、处理和写入的记录数进行审计。我知道批处理元数据表中提供相同的功能。根据业务需求,我们需要对
DATA_AUDIT
表进行审核。
在我的批处理作业中,我基于不同的字段(例如活动帐户、非活动帐户、活动标志等)实现了 CompositeItemWriter,基于此我将数据隔离并将其写入多个目标表中。
这里假设如果有 5000 条记录,这 5000 条记录将被分组为数据集,单个记录可以满足不同的业务规则并进入不同的组,这样数据就会在 5000 条数据块中达到 20,000 条。
StepListeners 仅捕获编号。第一个写入者的记录,它没有捕获任何其他写入者写入的数据,我如何跟踪第一个写入者的记录?的数据已由其他 3 位写入者写入?
有没有办法使用 Spring Batch API 来做到这一点,或者我们如何实现这一点?我浏览了链接,但在这里没有找到任何内容 - https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#stepExecutionListener
您可以获取 JobExecutionContext 并更新 writer 中的计数。
示例如下。
@Bean
@StepScope
public ItemWriter<Integer> itemWriter() {
return new ItemWriter<Integer>() {
private StepExecution stepExecution;
@Override
public void write(List<? extends Integer> items) throws Exception {
for (Integer item : items) {
System.out.println("item = " + item);
}
long count=stepExecution.getJobExecution().getExecutionContext().get("count");
count=count+items.size();
stepExecution.getJobExecution().getExecutionContext().put("count", count);
}
@BeforeStep
public void saveStepExecution(StepExecution stepExecution) {
this.stepExecution = stepExecution;
}
};
}