首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring Batch中审核来自CompositeItemWriter的记录?

如何在Spring Batch中审核来自CompositeItemWriter的记录?
EN

Stack Overflow用户
提问于 2020-07-30 21:08:22
回答 1查看 143关注 0票数 0

在Spring Batch中,我想对No.正在读取、处理和写入的记录。我知道批处理元数据表中也有相同的功能。根据业务需要,我们需要对DATA_AUDIT表进行审计。

在我的批处理作业中,我基于不同的字段(比如Active Accounts、InActive Accounts、Active Flag等)实现了CompositeItemWriter,在此基础上分离数据并将其写入多个目标表。

这里假设有5000条记录,这5000条记录被分组到数据集,单个记录可以满足不同的业务规则并进入不同的组,这样数据就会增加到5000块中的20000条。

StepListeners只捕捉到了no.在第一个写入者的记录中,它没有覆盖任何其他写入者写入的数据,我如何跟踪编号。是否已从其他3个写入器写入数据?

有没有办法使用Spring Batch API来实现这一点,或者我们如何实现?我通过link,但在这里没有找到任何东西-- https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#stepExecutionListener

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-30 22:38:20

您可以获取JobExecutionContext并在编写器中更新计数。

示例如下。

代码语言:javascript
复制
@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;
        }

    };
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63173878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档