首页 > 解决方案 > Spring Batch MongoBatchItemWriter 不刷新/提交到 mongo

问题描述

开始为新项目使用 Spring Batch。我有一个简单的批处理应用程序(基于 Person 示例),它按顺序调用了 4 个作业。前 2 个作业删除 mongo 集合的所有元素,下一个作业是 Person 作业,第 4 个作业操作在作业 #3 中加载的数据。

每个 Job 有 1 个步骤。每个步骤都有一个唯一的 MongoItemWriter。在应用程序完成之前,MongoItemWriters 似乎不会刷新到 mongodb,但不是在步骤或作业结束时。

从平面文件加载数据的作业是这样的:

  @Bean
    @Qualifier("personWriter")
    public MongoItemWriter<Person> mongoItemWriter(MongoTemplate mongoTemplate) {
        return new MongoItemWriterBuilder<Person>().template(mongoTemplate)
                .collection("person")
                .build();
    }

    @Order(10)
    @Bean
    public Job importUserJob(PersonCompletionNotificationListener listener, Step step1) {
        return jobBuilderFactory.get("importUserJob")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .flow(step1)
                .end()
                .build();
    }

    @Bean
    public Step step1(@Qualifier("personWriter") MongoItemWriter<Person> writer) {
        return stepBuilderFactory.get("importUserStep")
                .<Person, Person>chunk(1)
                .reader(reader())
                .processor(processor())
                .writer(writer)
                .build();
    }

当下一个作业运行时,该表是空的。

我预计任何 Chunk size=1、End of Step 或 End of Job 都会刷新到 mongo。我错过了什么?

标签: spring-batch

解决方案


推荐阅读