如何在 Spring Batch 中对 CompositeItemWriter 中的记录进行审核?

问题描述 投票:0回答:1

在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

spring-batch
1个回答
1
投票

您可以获取 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;
        }

    };
}
© www.soinside.com 2019 - 2024. All rights reserved.