首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有一半的MongoDB数据库是在Spring中处理的

只有一半的MongoDB数据库是在Spring中处理的
EN

Stack Overflow用户
提问于 2016-04-07 20:23:27
回答 1查看 1.3K关注 0票数 7

我有一个弹簧引导批处理与一个MongoDB数据库一起工作,以输入一个MySQL数据库。我有大约一半的数据库正在由程序处理,但只有大约200个错误在我的日志中。

BATCH_STEP_EXECUTION表让我知道处理进行得很顺利(状态已完成),并显示了一个5692的READ_COUNT,尽管我在数据库中有11800个文档。

我是否忘记了配置中的某些内容,以防止未通过整个数据库?

下面是我的配置类:

代码语言:javascript
复制
@Configuration
@EnableBatchProcessing
@Import(PersistenceConfig.class)
public class BatchConfiguration {
    @Autowired
    MongoTemplate mongoTemplate;

    @Autowired
    SessionFactory sessionFactory;

    @Bean
    @StepScope
    public ItemReader<CourseData> reader() {
        MongoItemReader<CourseData> mongoItemReader = new MongoItemReader<>();
        mongoItemReader.setTemplate(mongoTemplate);
        mongoItemReader.setCollection("foo");
        mongoItemReader.setQuery("{}");
        mongoItemReader.setTargetType(CourseData.class);
        Map<String, Sort.Direction> sort = new HashMap<>();
        sort.put("_id", Sort.Direction.ASC);
        mongoItemReader.setSort(sort);

        return mongoItemReader;
    }

    @Bean
    public ItemProcessor<CourseData, MatrixOne> processor() {
        return new CourseDataMatrixOneProcessor();
    }

    @Bean
    public ItemWriter<MatrixOne> writer() {
        HibernateItemWriter writer = new HibernateItemWriter();
        writer.setSessionFactory(sessionFactory);
        System.out.println("writing stuff");
        return writer;
    }

    @Bean
    public Job importUserJob(JobBuilderFactory jobs, Step s1) {
        return jobs.get("importRawCourseJob")
                .incrementer(new RunIdIncrementer())
                .flow(s1)
                .end()
                .build();
    }

    @Bean
    @Transactional
    public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<CourseData> reader, ItemWriter<MatrixOne> writer, ItemProcessor<CourseData, MatrixOne> processor) {
        return stepBuilderFactory.get("step1")
                .<CourseData, MatrixOne>chunk(10)
                .reader(reader)
                .processor(processor)
                .writer(writer)
                .build();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-17 16:03:34

好的,我今天解决了这个问题,当数据出现问题时,在转换器中返回一个空POJO而不是null。然后我就跳过处理器了。

但是,在遇到第一个null时,它并没有停止,这有点奇怪。也许是块元素的并行化让我看错了日志。

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

https://stackoverflow.com/questions/36486468

复制
相关文章

相似问题

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