春季批量mongo itemreader的问题?

时间:2013-07-30 06:45:13

标签: spring mongodb spring-batch

我发现MongoItemReader存在一个奇怪的问题。 这是我一步的配置:

    private Step addMnpInformation() throws Exception {
    return stepBuilders.get("addMnpInformation")
            .chunk(50)
            .reader(stagedCdrReader())
            .processor(addMnpProcessor())
            .writer(stagedCdrWriter())
            .build();
}

这是读者

@Bean
public MongoItemReader<StagedCdr> stagedCdrReader() throws Exception {
    MongoItemReader reader = new MongoItemReader<StagedCdr>();
    reader.setTemplate(stagingCdrTransactionManager);
    reader.setQuery("{cdrStatus:'PENDING'}");
    reader.setTargetType(StagedCdr.class);
    HashMap<String,Direction> sort = new HashMap<String, Direction>();
    sort.put("sequence", Direction.ASC);
    reader.setSort(sort);
    reader.setName("stagedCdrReader");
    reader.afterPropertiesSet();

    return reader;
}

似乎读者并没有阅读其他所有页面。我正在处理的记录有一个顺序Id,我发现它使用50页(可能是我的块大小)读取记录,但是这样:

从0到49 从100到149 从200到249 。 。

它没有阅读 从50到99 从150到199

滑雪的物品有多少取决于块物,例如块(50),然后50个物品会滑雪,我不知道为什么!

1 个答案:

答案 0 :(得分:0)

罗宾?是你吗?

前一段时间我向Spring论坛发布了同样的问题并忘了它。 这就是它发生的原因:

我发现处理器正在将字段cdrStatus更改为COMPLETED。这样,当读者请求新页面并且它使用限制和跳过时,第一页的更改记录未包含在新页面请求中,因此跳过了“新”第一页并且未检索到记录。

我不知道这是否是预期的行为。您可以在此处找到该主题:http://forum.spring.io/forum/spring-projects/batch/129604-problems-with-mongoitemreader